iOS:关于UIView切角的两种实现方式
2016-02-18 14:55
381 查看
转载自:http://www.jianshu.com/p/451b7fa94e2a
第一种:我想你一见到代码,就瞬间有吐的冲动,最常用的一种方式。。。
如此简单...但是,它默认强制裁掉了四个角啊。。。那问题来了,假如需求只要求切一个角呢。。。看第二种方法
第二种:还是在
从上不难看出代码关键所在...这里只做简单的扩展...具体根据项目需求来
再次列出官方裁边的可选项
第一种:我想你一见到代码,就瞬间有吐的冲动,最常用的一种方式。。。
UIButton*button=[[UIButtonalloc]init]; button.frame=CGRectMake(100,100,100,40); button.backgroundColor=[UIColorredColor]; button.layer.cornerRadius=20.0f; button.layer.masksToBounds=YES; [buttonsetTitle:@"测试"forState:UIControlStateNormal]; [self.viewaddSubview:button];
如此简单...但是,它默认强制裁掉了四个角啊。。。那问题来了,假如需求只要求切一个角呢。。。看第二种方法
第二种:还是在
layer上做文章,不同采用的是类扩展的方法,接下来以
UIButton为例,具体效果看下图:
#import"UIButton+Corner.h" @implementationUIButton(Corner) -(void)corner { CGRectbounds=self.bounds; UIBezierPath*maskPath=[UIBezierPathbezierPathWithRoundedRect:boundsbyRoundingCorners:UIRectCornerBottomLeftcornerRadii:CGSizeMake(20,20)]; CAShapeLayer*maskLayer=[CAShapeLayerlayer]; maskLayer.frame=bounds; maskLayer.path=maskPath.CGPath; [self.layeraddSublayer:maskLayer]; self.layer.mask=maskLayer; } @end
从上不难看出代码关键所在...这里只做简单的扩展...具体根据项目需求来
再次列出官方裁边的可选项
typedefNS_OPTIONS(NSUInteger,UIRectCorner){ UIRectCornerTopLeft=1<<0, UIRectCornerTopRight=1<<1, UIRectCornerBottomLeft=1<<2, UIRectCornerBottomRight=1<<3, UIRectCornerAllCorners=~0UL };
相关文章推荐
- UIDatePicker
- How to pass an empty string to Value Prompt
- Zoho Recruit:改善求职者应聘体验
- uGUI事件监听
- easyui dialog 有滚动条时的窗口定位
- EasyUI datagrid默认勾选checkbox时注意事项
- Java线程(篇外篇):阻塞队列BlockingQueue
- UIScrollView头文件学习
- Android常用UI控件 ViewGroup
- GDB watch if var !=value
- Badboy中创建Suite, test, step和Template
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
- ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)
- HUST 1358 Uiwurerirexb jeqvad(模拟解密)
- iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)
- Value '0000-00-00' can not be represented as java.sql.Date解决办法
- ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- 1041. Be Unique (20)
- UIAlertView使用全解