關於圓角的5種處理方式
說明: 改造之前的圓角處理方式,新增加了兩種,由於之前直接使用預設的富文字編輯,沒有設定成Markdown編輯器,之前寫的不能切換Markdown格式,所以只能再次重新在此新增了。
原效果 -> 改造後效果
1>無需任何程式碼直接在xib中實現:
只需要如下圖中的幾步即可實現效果:
其中的第4步
Key Path:layer.cornerRadius
type:Number
Value:20(寬的一半 例如:原圖寬為40)
2>程式碼實現:
// _header.clipsToBounds = YES;(_header就是圖片的名稱)
// _header.layer.cornerRadius = 20;
3>使用CAShapeLayer和UIBezierPath設定圓角
//設定圖片的尺寸大小
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
//設定圖片
imageView.image = [UIImage imageNamed:@"Snip20160726_2"];
CGSize radio = CGSizeMake(5, 5);//圓角尺寸
UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight|UIRectCornerBottomLeft|UIRectCornerBottomRight;//設定圓角位置
/**
* bezierPathWithRoundedRect:imgViewd的大小
byRoundingCorners:設定圓角的位置(左上、左下、右上、右下)
cornerRadii:設定圓角尺寸
*/
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds byRoundingCorners:corner cornerRadii:radio];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
//設定大小
maskLayer.frame = imageView.bounds;
//設定圖形樣子
maskLayer.path = maskPath.CGPath;
imageView.layer.mask = maskLayer;
[self.view addSubview:imageView];
4>使用貝塞爾曲線UIBezierPath和Core Graphics框架畫圓
//設定圖片的尺寸大小
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
//設定圖片
imageView.image = [UIImage imageNamed:@"Snip20160726_2.png"];
//開始對imageView進行畫圖
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0);
//使用貝塞爾曲線畫出一個圓形圖
[[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.frame.size.width] addClip];
[imageView drawRect:imageView.bounds];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
//結束畫圖
UIGraphicsEndImageContext();
[self.view addSubview:imageView];
5>封裝
直接匯入標頭檔案即可直接呼叫:github送上門
總結
:
上面的第1種和第2種方式都是通過對圖層進行直接改動,假設專案圖片多的話就會變得卡,所以建議最好不要使用此種方式,此種方式最消耗效能。而第3種、第4種、第5種的優勢在於:此種做法不是對控制元件或者圖片做手腳,而是將伺服器返回的正方形,通過繪製做成了圓形的圖片,再把圓形的圖片設定到imageView上去,這樣就直接顯示圖片了。
相關文章
- 你不知道的圓形圓角處理方式
- android 圓角圖片 處理Android
- SpringMVC非同步處理的 5 種方式SpringMVC非同步
- 圓形視訊和圓角視訊的一種實現方式
- Javascript事件處理程式的5種方式(相容寫法)JavaScript事件
- 關於Android的幾種事件處理Android事件
- LoadRunner中多值關聯的3種處理方式
- Android學習之 圓角邊框的幾種實現方式Android
- JavaScript 動畫方式彈出圓角框JavaScript動畫
- XImageView-ShapeImageView處理ImageView形狀,原形圓角等View
- SQLite 併發的四種處理方式SQLite
- PHP處理密碼的幾種方式PHP密碼
- php 與 nginx 的兩種處理方式PHPNginx
- iOS給UIImageView新增圓角的三種方法iOSUIView
- 對於linux go1.5版本的一種tcp監聽關閉處理方式LinuxGoTCP
- 大資料三種處理方式大資料
- MyBatis多對多的兩種處理方式MyBatis
- 關於中文URL的處理
- 小白:關於處理“can't find '__main__' module in ”這個問題的詳細處理方式!AI
- 關於丟失表空間資料檔案的處理方式
- Python影像處理丨5種影像處理特效Python特效
- ios實現圖片圓角方式小計iOS
- HBase協處理器載入的三種方式
- C#轉義字元的兩種處理方式C#字元
- iOS 關於時間的處理iOS
- 關於大資料量的處理大資料
- MySQL 關於毫秒的處理薦MySql
- 關於Disruptor處理流程
- 關於aud$物件相關處理物件
- 幾種常見的延遲執行處理方式
- iOS UIView設定少於四個的圓角iOSUIView
- 不明原因的約束報錯的兩種處理方式
- error的處理方式Error
- 關於Python中的日期處理Python
- 關於go的跨域處理 ginGo跨域
- 關於小數中0的處理
- 關於jdon 的事務處理疑惑?
- 關於批處理中的變數變數