iOS中設(shè)置圓角的幾種方法示例
前言
圓角(RounderCorner)是一種很常見的視圖效果,相比于直角,它更加柔和優(yōu)美,易于接受。但很多人并不清楚如何設(shè)置圓角的正確方式和原理。設(shè)置圓角會(huì)帶來一定的性能損耗,如何提高性能是另一個(gè)需要重點(diǎn)討論的話題。我查閱了一些現(xiàn)有的資料,收獲良多的同時(shí)也發(fā)現(xiàn)了一些誤導(dǎo)人錯(cuò)誤。
1. 使用layer屬性
layer.backgroundColor = [UIColor cyanColor].CGColor; // 給圖層添加背景色 layer.contents = (id)[UIImage imageNamed:@"view_BG.png"].CGImage; // 給圖層添加背景圖片 layer.cornerRadius = 8; // 將圖層的邊框設(shè)置為圓腳 layer.masksToBounds = YES; // 隱藏邊界 layer.borderWidth = 5; // 給圖層添加一個(gè)有色邊框 layer.borderColor = [UIColor colorWithRed:0.52 green:0.09 blue:0.07 alpha:1].CGColor; layer.shadowOffset = CGSizeMake(0, 3); // 設(shè)置陰影的偏移量 layer.shadowRadius = 10.0; // 設(shè)置陰影的半徑 layer.shadowColor = [UIColor blackColor].CGColor; // 設(shè)置陰影的顏色為黑色 layer.shadowOpacity = 0.9; // 設(shè)置陰影的不透明度
2. 使用繪圖設(shè)置圓角
/** 設(shè)置圓形圖片(放到分類中使用) */
- (UIImage *)cutCircleImage {
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0); // 獲取上下文
CGContextRef ctr = UIGraphicsGetCurrentContext(); // 設(shè)置圓形
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圖創(chuàng)建新圖
首先需要一張mask圖,然后將這張mask圖和原圖合成,得到帶圓角的新圖。效率和方法一類似,合成新圖等同于在off-screen作圖。該方法的優(yōu)點(diǎn)是可以不局限于圓角,全憑mask圖控制。
小結(jié)
如果要效率(例如要提高table view的滾動(dòng)幀數(shù)),就多用方法二。要方便,自然是方法一。如果需要的特殊形狀UIBezierPath對(duì)象無法構(gòu)成,則考慮方法三。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位iOS開發(fā)者們能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS 對(duì)plist文件進(jìn)行讀寫,增刪改查的實(shí)例
下面小編就為大家?guī)硪黄猧OS 對(duì)plist文件進(jìn)行讀寫,增刪改查的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02
iOS 獲取當(dāng)前的ViewController的方法
本篇文章主要介紹了iOS 獲取當(dāng)前的ViewController的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
詳解Swift 利用Opration和OprationQueue來下載網(wǎng)絡(luò)圖片
這篇文章主要介紹了詳解Swift 利用Opration和OprationQueue來下載網(wǎng)絡(luò)圖片的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09
IOS開發(fā)中如何設(shè)計(jì)短信驗(yàn)證碼防刷機(jī)制
給大家詳細(xì)分享一下在IOS的項(xiàng)目開發(fā)中如何設(shè)計(jì)短信驗(yàn)證碼防刷機(jī)制,已經(jīng)步驟詳解,喜歡的朋友參考下吧。2018-02-02
IOS 開發(fā)之UITableView 刪除表格單元寫法
這篇文章主要介紹了IOS 開發(fā)之UITableView 刪除表格單元寫法的相關(guān)資料,這里提供實(shí)例幫助大家實(shí)現(xiàn)該功能,希望能幫助到大家,需要的朋友可以參考下2017-08-08
詳解iOS應(yīng)用中播放本地視頻以及選取本地音頻的組件用法
這里來為大家詳解iOS應(yīng)用中播放本地視頻以及選取本地音頻的組件用法,分別使用MPMoviePlayerControlle和MPMediaPickerController來實(shí)現(xiàn),兩個(gè)都是MediaPlayer.framework中的多媒體組件,所以我們放到一起來講.2016-06-06
iOS實(shí)現(xiàn)輪盤動(dòng)態(tài)效果
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)輪盤動(dòng)態(tài)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
iOS開發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝
這篇文章主要介紹了iOS開發(fā)實(shí)現(xiàn)隨機(jī)圖片驗(yàn)證碼封裝,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08

