国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

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

2020-02-19 15:44:45
字體:
來源:轉載
供稿:網友

開發的項目多種多樣,有時候程序員也會遇到瓶頸不知如何往下操作,今天武林技術頻道小編為大家編寫了iOS開發之如何給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]; 

效果:

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

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

以上就是武林技術頻道和大家分享的iOS開發之如何給View添加指定位置的邊框線詳解,小編為大家呈現了很多介紹,足以讓我們這些讀者去銘記哦。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 二连浩特市| 平武县| 汉寿县| 连江县| 吉隆县| 苏州市| 铁岭市| 沁水县| 忻州市| 建宁县| 卓尼县| 高碑店市| 呼图壁县| 班玛县| 东宁县| 贵州省| 临沭县| 丽江市| 特克斯县| 清河县| 广东省| 毕节市| 三亚市| 江西省| 新干县| 鹤岗市| 镇沅| 呼玛县| 棋牌| 常德市| 溧水县| 壤塘县| 东山县| 宝兴县| 蒙城县| 松滋市| 茶陵县| 枝江市| 南昌市| 科尔| 铜鼓县|