最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月13日 10:04:36   作者:開發(fā)仔XG  
這篇文章主要給大家介紹了iOS開發(fā)之如何給View添加指定位置的邊框線的相關(guān)資料,給view加邊框很容易,重點(diǎn)是如何給指定邊框加邊框,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

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

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

示例代碼

封裝一:直接封裝成了一個(gè)方法

/// 邊框類型(位移枚舉) 
typedef NS_ENUM(NSInteger, UIBorderSideType) { 
 UIBorderSideTypeAll = 0, 
 UIBorderSideTypeTop = 1 << 0, 
 UIBorderSideTypeBottom = 1 << 1, 
 UIBorderSideTypeLeft = 1 << 2, 
 UIBorderSideTypeRight = 1 << 3, 
}; 
 
/** 
 設(shè)置view指定位置的邊框 
 
 @param originalView 原view 
 @param color   邊框顏色 
 @param borderWidth 邊框?qū)挾?
 @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]; 
  
 /// 左側(cè) 
 if (borderType & UIBorderSideTypeLeft) { 
  /// 左側(cè)線路徑 
  [bezierPath moveToPoint:CGPointMake(0.0f, originalView.frame.size.height)]; 
  [bezierPath addLineToPoint:CGPointMake(0.0f, 0.0f)]; 
 } 
  
 /// 右側(cè) 
 if (borderType & UIBorderSideTypeRight) { 
  /// 右側(cè)線路徑 
  [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內(nèi)容

#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內(nèi)容

#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; 
 } 
  
  
 /// 左側(cè) 
 if (borderType & UIBorderSideTypeLeft) { 
  /// 左側(cè)線路徑 
  [self.layer addSublayer:[self addLineOriginPoint:CGPointMake(0.f, 0.f) toPoint:CGPointMake(0.0f, self.frame.size.height) color:color borderWidth:borderWidth]]; 
 } 
  
 /// 右側(cè) 
 if (borderType & UIBorderSideTypeRight) { 
  /// 右側(cè)線路徑 
  [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]; 

效果:

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

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • iOS登錄時(shí)驗(yàn)證手機(jī)號(hào)與倒計(jì)時(shí)發(fā)送驗(yàn)證碼問題詳解

    iOS登錄時(shí)驗(yàn)證手機(jī)號(hào)與倒計(jì)時(shí)發(fā)送驗(yàn)證碼問題詳解

    這篇文章主要給大家介紹了關(guān)于iOS登錄時(shí)驗(yàn)證手機(jī)號(hào)與倒計(jì)時(shí)發(fā)送驗(yàn)證碼問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2019-01-01
  • iOS 懶加載的使用實(shí)例代碼

    iOS 懶加載的使用實(shí)例代碼

    本篇文章主要介紹了iOS 懶加載的使用實(shí)例代碼,詳細(xì)的介紹了什么是懶加載和優(yōu)點(diǎn),及其實(shí)例。有興趣的可以了解一下
    2017-05-05
  • iOS中關(guān)于模塊化開發(fā)解決方案(純干貨)

    iOS中關(guān)于模塊化開發(fā)解決方案(純干貨)

    這篇文章主要介紹了iOS中關(guān)于模塊化開發(fā)解決方案(純干貨)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • iOS 實(shí)現(xiàn)類似QQ分組樣式的兩種方式

    iOS 實(shí)現(xiàn)類似QQ分組樣式的兩種方式

    這篇文章主要介紹了iOS 實(shí)現(xiàn)類似QQ分組樣式的兩種方式,思路很簡單,對(duì)模型數(shù)據(jù)操作或則控制界面顯示,需要的朋友可以參考下
    2017-07-07
  • 總結(jié)IOS中隱藏軟鍵盤的三種方式

    總結(jié)IOS中隱藏軟鍵盤的三種方式

    在IOS開發(fā)中,軟鍵盤是開發(fā)者們經(jīng)常需要打交道的地方,下面為大家?guī)砦艺砜偨Y(jié)的三種隱藏鍵盤的方法。有需要的可以參考借鑒。
    2016-08-08
  • 詳解IOS宏與常量的使用(define,const)

    詳解IOS宏與常量的使用(define,const)

    這篇文章主要介紹了詳解IOS宏define與常量const的使用方法,適合IOS程序員參考,一起來學(xué)習(xí)下。
    2017-12-12
  • iOS如何自定義步驟進(jìn)度條實(shí)例詳解

    iOS如何自定義步驟進(jìn)度條實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何自定義步驟進(jìn)度條的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • iOS將相冊(cè)中圖片上傳至服務(wù)器的方法

    iOS將相冊(cè)中圖片上傳至服務(wù)器的方法

    這篇文章主要為大家詳細(xì)介紹了iOS將相冊(cè)中圖片上傳至服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • iOS基礎(chǔ)動(dòng)畫教程分享

    iOS基礎(chǔ)動(dòng)畫教程分享

    這篇文章主要為大家詳細(xì)介紹了iOS幾種基礎(chǔ)動(dòng)畫教程,包括位置動(dòng)畫、透明度動(dòng)畫、大小動(dòng)畫等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • iOS中實(shí)現(xiàn)動(dòng)態(tài)區(qū)域裁剪圖片功能實(shí)例

    iOS中實(shí)現(xiàn)動(dòng)態(tài)區(qū)域裁剪圖片功能實(shí)例

    圖片處理中經(jīng)常用的圖片剪裁,就是通過剪裁框確定圖片剪裁的區(qū)域,然后剪去該區(qū)域的圖片,下面這篇文章主要給大家介紹了關(guān)于iOS中實(shí)現(xiàn)動(dòng)態(tài)區(qū)域裁剪圖片功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-11-11

最新評(píng)論

康定县| 淳安县| 鲁山县| 库车县| 鸡泽县| 平江县| 邵武市| 荣昌县| 三台县| 天镇县| 咸丰县| 健康| 富源县| 盘锦市| 云南省| 莱芜市| 平定县| 嘉善县| 井冈山市| 延川县| 昭苏县| 工布江达县| 兴化市| 建瓯市| 禹城市| 莱芜市| 孝义市| 乌兰察布市| 贞丰县| 大邑县| 武宁县| 高平市| 德江县| 蚌埠市| 吉隆县| 内江市| 额济纳旗| 辽宁省| 垫江县| 阳曲县| 台北县|