<iOS小技巧>UIview指定设置控件圆角

一、用法:

众所周知,设置控件的圆角使用layer.cornerRadius属性即可,但是这样设置成的结果是4个边角都是圆角类型。

利用班赛尔曲线画角:

//利用班赛尔曲线画角

UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:button.bounds byRoundingCorners:(UIRectCornerBottomLeft |UIRectCornerBottomRight) cornerRadii:CGSizeMake(10, 10)];

CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];

shapeLayer.frame = button.bounds;

shapeLayer.path = bezierPath.CGPath;

button.layer.mask = shapeLayer;

关于设置指定位置控件圆角的枚举:

typedef NS_OPTIONS(NSUInteger, UIRectCorner) {

UIRectCornerTopLeft     = 1 << 0, //左上

UIRectCornerTopRight    = 1 << 1, //右上

UIRectCornerBottomLeft  = 1 << 2, //左下

UIRectCornerBottomRight = 1 << 3, //右下

UIRectCornerAllCorners  = ~0UL    //全角

};

我的用法如下:

UIBezierPath *maskPathA = [UIBezierPath bezierPathWithRoundedRect:_smsCodeTFiled.boundsbyRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeftcorner Radii:CGSizeMake(self.smsCodeTFiled.bounds.size.height/2.0, self.smsCodeTFiled.bounds.size.height/2.0)];

CAShapeLayer *maskLayerA = [[CAShapeLayer alloc] init];

maskLayerA.frame = _smsCodeTFiled.bounds;

maskLayerA.path = maskPathA.CGPath;

_smsCodeTFiled.layer.mask = maskLayerA;

_smsCodeTFiled.layer.masksToBounds = YES;

[self.view bringSubviewToFront:self.smsCodeLb];

二、我的想法

这个用法主要用于在左边有圆角,右边没有,或者相反的状况,但是注意一下就是,当设置多个UIView时,要记得不要声明相同的名称,例如   UIBezierPath *maskPath  后面声明其他UIview的时候也这么写  UIBezierPath *maskPath    就会出错了,记得不要重复声明同一个名称的对象就好。如果此方法没有生效,很大可能是Xib文件加了约束导致此方法不能生效。

三、思考与行动

1.尝试不用纯代码,利用Xib 能否使这某个UIView 指定位置设置圆角?

2.尝试通过其他方法,来设置UIVIew指定位置圆角,你能想到几种方法?感觉那种最好用?哪种最不消耗内存。

时间: 2024-12-26 04:00:28

<iOS小技巧>UIview指定设置控件圆角的相关文章

iOS设置控件圆角,和label的行距。

1. 设置控件圆角 UIView *nameBgView = (UIView *)[PublicMethods creatViewWithType:@"UIView" andParent:name andTag:kDrawCarTabelNameHeadBgViewTag];            [nameBgView setFrame:CGRectMake(kDrawCarTableContentLabelXMargin, 30, name.frame.size.width-kDr

IOS 制作动画代码和 设置控件透明度

方式1: //animateWithDuration用1秒钟的时间,执行代码 [UIView animateWithDuration:1.0 animations:^{ //存放需要执行的动画代码 self.iconBtn.frame=CGRectMake(83,85,150,150); self.cover.alpha=0.0;//设置控件的透明度 } completion:^(BOOL finished) { //动画执行完毕后会自动调用这个block内部的代码 [self.cover re

iOS 设置控件圆角及边框

1. 设置圆角: self.view.layer.masksToBounds = YES; self.view.layer.cornerRadius = 10.0f; 2. 添加边框: self.layer.borderWidth = 5.0f; self.layer.borderColor = [[UIColor colorWithRed:164.0/255 green:142.0/255 blue:247.0/255 alpha:1.0] CGColor]; 示例:

ios之如何让图片显示成圆形的样式/设置控件边框大小以及颜色

比如说QQ登陆头像显示出来的就是圆形的,但实际上它的图片并非就是圆形,而是通过对layer层进行绘制而成的.说到layer每个控件都会有layer层属性所以可以把任意的控件都可以设置成圆形,或是椭圆型看项目需要而定 UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"头像.png"]]; imageView.frame = CGRectMake(100, 100, 100, 1

iOS 小技巧总结,绝对有你想要的

iOS 小技巧总结,绝对有你想要的 原文链接:http://www.jianshu.com/p/4523eafb4cd4 在这里总结一些 iOS 开发中的小技巧,能大大方便我们的开发,持续更新. —— 由 xcvxvxc分享 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 在viewWillAppear里面添加如下代码: //分组列表头部空白处理 CGRect frame = myTableView.tableHeade

iOS开发基础篇-手写控件

一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton 单击事件  [topbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; 1) addTarget:forControlEvents: 方法定义在 UIControl 类中

iOS开发UI篇—手写控件,frame,center和bounds属性

iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:se

IOS开发基础篇--手写控件,frame,center和bounds属性

iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:se

iOS开发项目篇—43子控件的细节处理

iOS开发项目篇—43子控件的细节处理 一.升级UI 把之前的UI图片删除,换上新的图片(图片命名一致,规范)没有其他的影响. 删除之后,添加. 替换之后,做一次clear操作. 建议把沙盒中的包删除,删除之后再做一次clear操作. 二.调整转发(模块) 1.设置背景(使用提供的素材图片进行平铺) 为转发微博部分设置背景,考虑到这个部分整体上是一个UIView,可以尝试以下设置. 第一种尝试: 但是这样设置,因为图片是平铺的,所以整个背景会出现线条效果,影响显示,不可行. 第二种尝试: 注意: