1. 使用layer屬性
layer.backgroundColor = [UIColor cyanColor].CGColor; // 給圖層添加背景色
layer.contents = (id)[UIImage imageNamed:@"view_BG.png"].CGImage; // 給圖層添加背景圖片
layer.cornerRadius = 8; // 將圖層的邊框設置為圓腳
layer.masksToBounds = YES; // 隱藏邊界
layer.borderWidth = 5; // 給圖層添加一個有色邊框
layer.borderColor = [UIColor colorWithRed:0.52 green:0.09 blue:0.07 alpha:1].CGColor;
layer.shadowOffset = CGSizeMake(0, 3); // 設置陰影的偏移量
layer.shadowRadius = 10.0; // 設置陰影的半徑
layer.shadowColor = [UIColor blackColor].CGColor; // 設置陰影的顏色為黑色
layer.shadowOpacity = 0.9; // 設置陰影的不透明度
2. 使用繪圖設置圓角
/** 設置圓形圖片(放到分類中使用) */
- (UIImage *)cutCircleImage {
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0); // 獲取上下文
CGContextRef ctr = UIGraphicsGetCurrentContext(); // 設置圓形
CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
CGContextAddEllipseInRect(ctr, rect); // 裁剪
CGContextClip(ctr); // 將圖片畫上去
[self drawInRect:rect];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
3. 通過另一張mask圖創建新圖
首先需要一張mask圖,然后將這張mask圖和原圖合成,得到帶圓角的新圖。效率和方法一類似,合成新圖等同于在off-screen作圖。該方法的優點是可以不局限于圓角,全憑mask圖控制。
如果要效率(例如要提高table view的滾動幀數),就多用方法二。要方便,自然是方法一。如果需要的特殊形狀UIBezierPath對象無法構成,則考慮方法三。