前言
圓角(RounderCorner)是一種很常見的視圖效果,相比於直角,它更加柔和優美,易於接受。但很多人並不清楚如何設置圓角的正確方式和原理。設置圓角會帶來一定的性能損耗,如何提高性能是另一個需要重點討論的話題。我查閱了一些現有的資料,收獲良多的同時也發現了一些誤導人錯誤。
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對象無法構成,則考慮方法三。
總結
以上就是這篇文章的全部內容了,希望本文的內容對各位IOS開發者們能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對本站的支持。
[db:作者簡介][db:原文翻譯及解析]【iOS中設置圓角的幾種方法示例】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!