您的位置:首页 > 产品设计 > UI/UE

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
};



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: