iOS中讓控件顯示圓形圖片

本文一共提供三種控件顯示圓形圖片的方法,針對不同的使用場景,請自行選擇合適的方法。

方法一:

1.1拿到圖片UIImage *image;

1.2開啟一個圖形上下文 設(shè)置圖形上下文的siz 等于圖片size;

UIGraphicsBeginImageContext(image.size);

1.3利用貝塞爾曲線,設(shè)置一個圓形裁剪區(qū)域(設(shè)置一個矩形的內(nèi)切圓/內(nèi)切橢圓);

UIBezierPath *path =[UIBezierPath bezierPathWithOvalInRect:CGRectMake( 0, 0, image.size.width, image.size.height)];

1.4拿到貝塞爾曲線對象 添加裁剪;

[path addClip];

1.5將圖片畫到圖像上下文上
由于圖像上下文size和圖片的size設(shè)置一樣 所以可以設(shè)置point為零點;

[image drawAtPoint:CGPointZero];

1.6從當(dāng)前的圖像上下文中獲取圖片;

image = UIGraphicsGetImageFromCurrentImageContext();

1.7雖然此時已經(jīng)拿到 裁剪變?yōu)閳A形的圖片image,但是千萬不要忘了最后還有重要的一個步驟,那就是關(guān)閉圖形上下文,這個步驟特別容易讓人忘記,切記!

UIGraphicsEndImageContext();

簡單的幾個步驟就完成了一個正圓形圖片的裁剪功能,當(dāng)然還有我們更加簡單的方式哦,那就是接下來的方法二。

方法二:

2.1拿到你要設(shè)置的UIImageView *imageV;
2.2設(shè)置imageV 的layer層的圓角半徑;
2.3拿到imageV的layer層,并且告訴layer將位于它之下的layer都遮蓋住;
兩個步驟解決,簡單明了,但是此方法會帶來一定的性能問題。
即:會觸發(fā)離屏渲染,比較消耗性能。比如當(dāng)一個頁面上有十幾頭像這樣設(shè)置了圓角,那么會明顯感覺到卡頓。
注意:png圖片UIImageView處理圓角是不會產(chǎn)生離屏渲染的。(ios9.0之后不會離屏渲染,ios9.0之前還是會離屏渲染)。
代碼如下:

 imageV.layer.cornerRadius = self.iconImageV.tml_width *0.5;
 imageV.layer.masksToBounds =YES;

當(dāng)然,如果你一行代碼也不寫 也想設(shè)置圓角也是可以的,那就是我么接下來的第三種方法。

方法三:

如果你是在xib中添加的UIImageView的話,這里還提供另外一種不需要編寫一行代碼的方法,詳細(xì)請參照如下圖片中指示:

第一個屬性:layer.cornerRadius

第二個屬性:layer.masksToBounds

第一步:

Snip20161020_1.png

第二步:

Snip20161020_4.png

總結(jié):

以上三種方法都可以達(dá)到同樣的效果,具體選擇哪一種,視情況而定!
此外,第三中方法中涉及運(yùn)行時方面的知識,具體原理就不在此做過多解釋。同時也是三種方法中最為裝B的方法,溫馨提示:裝B雖好,但要慎用!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,557評論 6 30
  • 每個UIView有一個伙伴稱為layer,一個CALayer。UIView實際上并沒有把自己畫到屏幕上;它繪制本身...
    shenzhenboy閱讀 3,143評論 0 17
  • 轉(zhuǎn)載:http://www.lxweimin.com/p/32fcadd12108 每個UIView有一個伙伴稱為l...
    F麥子閱讀 6,293評論 0 13
  • 1.xcode5和xcode7區(qū)別 1.xcode7沒有Frameworks文件夾,xcode7內(nèi)部會自動幫你導(dǎo)入...
    彼岸的黑色曼陀羅閱讀 526評論 0 2
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,141評論 5 13