注意:因為在項目中會用到各種奇形怪狀的控件扣泊,有時候設計切圖也比較費勁近范,那就自己動手吧正好了解一下高效切割圓角的方法,Let`s do it
通常我們經常會習慣性的直接在控件的Layer
層進行設置延蟹,這樣設置一個控件也許沒有多大的性能影響评矩,但是如果控件多的話估計就不行了。
self.button.layer.cornerRadius = 20;
self.button.layer.masksToBounds = YES;
下面就介紹兩種比較常見的設置圓角的方法
第一種方法:使用Quartz2D直接繪制圖片
- (UIImage*)cropImageWithRect:(CGRect)cropRect
{
CGRect drawRect = CGRectMake(-cropRect.origin.x , -cropRect.origin.y, self.size.width * self.scale, self.size.height * self.scale);
UIGraphicsBeginImageContext(cropRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, CGRectMake(0, 0, cropRect.size.width, cropRect.size.height));
[self drawInRect:drawRect];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
第二種方法:使用貝塞爾曲線(UIBezierPath)
self.button = [UIButton buttonWithType:UIButtonTypeCustom];
self.button.frame = CGRectMake(10, 200, self.view.frame.size.width - 20, 40);
self.button.backgroundColor = [UIColor brownColor];
[self.view addSubview:self.button];
/* 貝塞爾曲線切割 */
/**
* @param UIRectCorner
* 左上 UIRectCornerTopLeft = 1 << 0,
左下 UIRectCornerBottomLeft = 1 << 2,
右下 UIRectCornerBottomRight = 1 << 3,
所有角 UIRectCornerAllCorners = ~0UL
*/
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.button.bounds byRoundingCorners:UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:self.button.bounds.size];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
[self.button setTitle:@"type: UIRectCornerTopRight | UIRectCornerBottomRight" forState:UIControlStateNormal];
self.button.titleLabel.font = [UIFont systemFontOfSize:14];
//設置大小
maskLayer.frame = self.button.bounds;
//設置圖形樣子
maskLayer.path = maskPath.CGPath;
self.button.layer.mask = maskLayer;
-
下面是實現(xiàn)各種圓角的效果屏幕快照 2018-06-15 10.23.55.png
屏幕快照 2018-06-15 10.24.34.png
屏幕快照 2018-06-15 10.26.08.png
屏幕快照 2018-06-15 10.30.26.png
屏幕快照 2018-06-15 10.31.50.png
屏幕快照 2018-06-15 10.32.21.png
屏幕快照 2018-06-15 10.33.08.png
屏幕快照 2018-06-15 10.35.52.png
下次需要啥效果直接看看就知道了阱飘,因為平常實在是遇到的不多斥杜,多以記錄一下,如果你覺得有用沥匈,留下您的腳诱嵛埂!