亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發之如何給View添加指定位置的邊框線詳解

2019-10-21 18:44:15
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于iOS如何給View添加指定位置邊框線的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

略微封裝了一下,給View添加指定位置的邊框線,其中位移枚舉的使用詢問了哥們兒,總算搞定;

示例代碼

封裝一:直接封裝成了一個方法

/// 邊框類型(位移枚舉) typedef NS_ENUM(NSInteger, UIBorderSideType) {  UIBorderSideTypeAll = 0,  UIBorderSideTypeTop = 1 << 0,  UIBorderSideTypeBottom = 1 << 1,  UIBorderSideTypeLeft = 1 << 2,  UIBorderSideTypeRight = 1 << 3, };  /**  設置view指定位置的邊框   @param originalView 原view  @param color   邊框顏色  @param borderWidth 邊框寬度  @param borderType  邊框類型 例子: UIBorderSideTypeTop|UIBorderSideTypeBottom  @return view  */ - (UIView *)borderForView:(UIView *)originalView color:(UIColor *)color borderWidth:(CGFloat)borderWidth borderType:(UIBorderSideType)borderType {    if (borderType == UIBorderSideTypeAll) {   originalView.layer.borderWidth = borderWidth;   originalView.layer.borderColor = color.CGColor;   return originalView;  }    /// 線的路徑  UIBezierPath * bezierPath = [UIBezierPath bezierPath];    /// 左側  if (borderType & UIBorderSideTypeLeft) {   /// 左側線路徑   [bezierPath moveToPoint:CGPointMake(0.0f, originalView.frame.size.height)];   [bezierPath addLineToPoint:CGPointMake(0.0f, 0.0f)];  }    /// 右側  if (borderType & UIBorderSideTypeRight) {   /// 右側線路徑   [bezierPath moveToPoint:CGPointMake(originalView.frame.size.width, 0.0f)];   [bezierPath addLineToPoint:CGPointMake( originalView.frame.size.width, originalView.frame.size.height)];  }    /// top  if (borderType & UIBorderSideTypeTop) {   /// top線路徑   [bezierPath moveToPoint:CGPointMake(0.0f, 0.0f)];   [bezierPath addLineToPoint:CGPointMake(originalView.frame.size.width, 0.0f)];  }    /// bottom  if (borderType & UIBorderSideTypeBottom) {   /// bottom線路徑   [bezierPath moveToPoint:CGPointMake(0.0f, originalView.frame.size.height)];   [bezierPath addLineToPoint:CGPointMake( originalView.frame.size.width, originalView.frame.size.height)];  }   CAShapeLayer * shapeLayer = [CAShapeLayer layer];  shapeLayer.strokeColor = color.CGColor;  shapeLayer.fillColor = [UIColor clearColor].CGColor;  /// 添加路徑  shapeLayer.path = bezierPath.CGPath;  /// 線寬度  shapeLayer.lineWidth = borderWidth;    [originalView.layer addSublayer:shapeLayer];    return originalView; } 

封裝二:封裝成了類別

.h內容

#import <UIKit/UIKit.h>  typedef NS_OPTIONS(NSUInteger, UIBorderSideType) {  UIBorderSideTypeAll = 0,  UIBorderSideTypeTop = 1 << 0,  UIBorderSideTypeBottom = 1 << 1,  UIBorderSideTypeLeft = 1 << 2,  UIBorderSideTypeRight = 1 << 3, };  @interface UIView (BorderLine)  - (UIView *)borderForColor:(UIColor *)color borderWidth:(CGFloat)borderWidth borderType:(UIBorderSideType)borderType;  @end 

.m內容

#import "UIView+BorderLine.h"  @implementation UIView (BorderLine)  - (UIView *)borderForColor:(UIColor *)color borderWidth:(CGFloat)borderWidth borderType:(UIBorderSideType)borderType {    if (borderType == UIBorderSideTypeAll) {   self.layer.borderWidth = borderWidth;   self.layer.borderColor = color.CGColor;   return self;  }      /// 左側  if (borderType & UIBorderSideTypeLeft) {   /// 左側線路徑   [self.layer addSublayer:[self addLineOriginPoint:CGPointMake(0.f, 0.f) toPoint:CGPointMake(0.0f, self.frame.size.height) color:color borderWidth:borderWidth]];  }    /// 右側  if (borderType & UIBorderSideTypeRight) {   /// 右側線路徑   [self.layer addSublayer:[self addLineOriginPoint:CGPointMake(self.frame.size.width, 0.0f) toPoint:CGPointMake( self.frame.size.width, self.frame.size.height) color:color borderWidth:borderWidth]];  }    /// top  if (borderType & UIBorderSideTypeTop) {   /// top線路徑   [self.layer addSublayer:[self addLineOriginPoint:CGPointMake(0.0f, 0.0f) toPoint:CGPointMake(self.frame.size.width, 0.0f) color:color borderWidth:borderWidth]];  }    /// bottom  if (borderType & UIBorderSideTypeBottom) {   /// bottom線路徑   [self.layer addSublayer:[self addLineOriginPoint:CGPointMake(0.0f, self.frame.size.height) toPoint:CGPointMake( self.frame.size.width, self.frame.size.height) color:color borderWidth:borderWidth]];  }    return self; }  - (CAShapeLayer *)addLineOriginPoint:(CGPoint)p0 toPoint:(CGPoint)p1 color:(UIColor *)color borderWidth:(CGFloat)borderWidth {   /// 線的路徑  UIBezierPath * bezierPath = [UIBezierPath bezierPath];  [bezierPath moveToPoint:p0];  [bezierPath addLineToPoint:p1];    CAShapeLayer * shapeLayer = [CAShapeLayer layer];  shapeLayer.strokeColor = color.CGColor;  shapeLayer.fillColor = [UIColor clearColor].CGColor;  /// 添加路徑  shapeLayer.path = bezierPath.CGPath;  /// 線寬度  shapeLayer.lineWidth = borderWidth;  return shapeLayer; }   @end 

用法:

UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(80.0f, 80.0f, 200.0f, 100.0f)];  testView.backgroundColor = [UIColor lightGrayColor];  [self.view addSubview:testView];  [self borderForView:testView color:[UIColor redColor] borderWidth:1.0f borderType:UIBorderSideTypeTop | UIBorderSideTypeBottom]; 

效果:

ios,view邊框,view添加邊框,給view加邊框

不足之處,邊框線過寬的話,交界處會有留白;

ps:注意:需要先把你的view加載在父view上,[self.view addSubview:testView]; 之后再設置邊框;否則可能會不起作用的;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品美女久久久| 欧美另类暴力丝袜| 欧美日韩第一视频| 国产视频精品久久久| 综合136福利视频在线| 青青草一区二区| 78m国产成人精品视频| 亚洲有声小说3d| 日韩av网站在线| 中文字幕日韩高清| 欧美极品美女视频网站在线观看免费| 亚洲最大福利视频网站| 久久视频国产精品免费视频在线| 日韩欧美国产高清91| 国自在线精品视频| 人体精品一二三区| 日韩中文字幕免费看| 日韩网站免费观看高清| 国产精品老女人视频| 欧美日本高清视频| 在线播放精品一区二区三区| 欧美疯狂性受xxxxx另类| 国产成人精品免费久久久久| 亚洲视频欧美视频| 福利微拍一区二区| 91精品久久久久久久久中文字幕| 成人中文字幕+乱码+中文字幕| 日韩中文在线观看| 91美女高潮出水| 亚洲福利视频久久| 色悠悠国产精品| 欧美一级视频一区二区| 久久免费观看视频| 日本不卡高字幕在线2019| 亚洲18私人小影院| 欧美在线视频免费播放| 亚洲а∨天堂久久精品喷水| 日本午夜精品理论片a级appf发布| 亚洲国产精品va在线看黑人动漫| 欧美激情第三页| 国产欧美日韩综合精品| 国产精品视频一区国模私拍| 亚洲a级在线播放观看| 国产精品亚洲аv天堂网| 国产精品劲爆视频| 日韩av电影在线网| 国内精品视频一区| 精品亚洲aⅴ在线观看| 8050国产精品久久久久久| 国产精品扒开腿做爽爽爽的视频| 狠狠躁夜夜躁人人躁婷婷91| 久久香蕉国产线看观看av| 日韩高清免费在线| 亚洲人成77777在线观看网| 欧美激情综合色综合啪啪五月| 亚洲欧美国产一区二区三区| 欧美黑人巨大xxx极品| 久久网福利资源网站| 国产欧美精品在线播放| 欧美日韩加勒比精品一区| 久久精品国产一区二区三区| 亚洲奶大毛多的老太婆| 国产一区二区三区在线看| 欧美高清视频免费观看| 亚洲成人免费在线视频| 欧美激情欧美狂野欧美精品| 国产精品永久免费| 久久最新资源网| 国产精品99久久久久久久久| 在线播放国产精品| 欧美中在线观看| 一本色道久久88综合亚洲精品ⅰ| 国产精品人成电影| 国产日韩欧美中文| 亚洲色图欧美制服丝袜另类第一页| 欧美精品久久久久久久免费观看| 午夜免费久久久久| 97精品伊人久久久大香线蕉| 高潮白浆女日韩av免费看| 永久免费精品影视网站| 最近2019年日本中文免费字幕| www.久久色.com| 清纯唯美亚洲激情| 欧美日韩国产在线看| 久久手机精品视频| 精品亚洲一区二区三区四区五区| 日本成人在线视频网址| 国模极品一区二区三区| 91九色视频导航| 色婷婷成人综合| 国产精品综合不卡av| 久久久久久一区二区三区| 成人国内精品久久久久一区| 精品自拍视频在线观看| 久久精品中文字幕一区| 欧美成人黑人xx视频免费观看| 欧美日韩国产一区二区| 国产91精品久久久久久久| 97色在线观看| 国产视频久久久久| 992tv成人免费影院| 亚洲精品国产综合区久久久久久久| 91免费人成网站在线观看18| 亚洲黄色av女优在线观看| 超碰97人人做人人爱少妇| 亚洲精品久久久久久久久久久久| 中文字幕欧美在线| 91免费精品国偷自产在线| 日韩精品视频观看| 色偷偷偷亚洲综合网另类| 国产伦精品免费视频| 欧美国产日韩视频| 亚洲天堂免费在线| 久久精品国产亚洲| 成人国产精品免费视频| 成人性生交xxxxx网站| 一区二区三区天堂av| 亚洲影视九九影院在线观看| 91精品视频免费| 欧美最猛性xxxx| 国产精品盗摄久久久| 欧美日韩在线另类| 国产精品国语对白| 欧美亚洲国产成人精品| 国产精品aaaa| 国产精品扒开腿做爽爽爽男男| 国产欧美日韩中文字幕在线| 美女999久久久精品视频| 精品人伦一区二区三区蜜桃免费| 国产日韩欧美自拍| 亚洲精品在线视频| 色与欲影视天天看综合网| 亚洲精品电影久久久| 日本高清+成人网在线观看| 欧美在线观看网址综合| 国产日韩中文字幕| 欧美福利视频在线观看| 亚洲精品999| 亚洲欧美中文日韩在线v日本| 91高清视频在线免费观看| 成人国内精品久久久久一区| 欧美日韩国产限制| 亚州国产精品久久久| 日韩在线观看免费网站| 亚洲91av视频| 午夜精品久久久久久久久久久久久| 亚洲综合小说区| 欧美性xxxxx| 久久久这里只有精品视频| 亚洲色图35p| 亚洲综合精品一区二区| 久久精品国产96久久久香蕉| 日韩精品极品毛片系列视频| 久久福利视频导航| 国产精品69久久久久| 欧美激情中文网| 91久久久久久久久久久久久| 97免费中文视频在线观看| 精品国偷自产在线视频| 国产高清在线不卡| 岛国视频午夜一区免费在线观看| 中文字幕久热精品视频在线| 欧美精品在线视频观看| 69av视频在线播放|