你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> 圖片圓角處理

圖片圓角處理

編輯:IOS技巧綜合
[摘要]本文是對圖片圓角處理的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

問到tableView有哪些優化的方法,想必很多人會說到,圖片盡量不要圓角處理,特別注意的是,不是說這裡的圖片不能圓角顯示,只是說不能使用setCornerRadiusi對imageview的layer進行圓角處理,網上的解釋是,通過設置layer的屬性,實現圓角,在iOS9以前這種設置可能會觸發離屏渲染,而這是比較消耗性能的,會明顯感覺到卡頓。
注意:ios9.0之後對UIImageView的圓角設置做了優化,UIImageView這樣設置圓角
不會觸發離屏渲染,ios9.0之前還是會觸發離屏渲染。而UIButton還是都會觸發離屏渲染。

下面有三種設置圓角的方法:

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"keai"]];

imageView.backgroundColor = [UIColor yellowColor];

imageView.frame = CGRectMake(100, 100, self.view.frame.size.width - 200, self.view.frame.size.width - 200);

[self.view addSubview:imageView];

// [self setGraphicsCutCirculayWithView:imageView roundedCornersSize:100];

[self setLayerAndBezierPathCutCircularWithView:imageView roundedCornersSize:100];

}

#pragma mark - 通過設置layer 切圓角,是最常用的,也是最耗性能的

- (void)setLayerCutCirculayWithView:(UIView *) view roundedCornersSize:(CGFloat )cornersSize

{

view.layer.masksToBounds = YES;

// 設置圓角半徑

view.layer.cornerRadius = cornersSize;

}

#pragma mark - 通過layer和bezierPath 設置圓角

- (void)setLayerAndBezierPathCutCircularWithView:(UIView *) view roundedCornersSize:(CGFloat )cornersSize

{

// 創建BezierPath 並設置角 和 半徑 這裡只設置了 左上 和 右上

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(cornersSize, cornersSize)];

CAShapeLayer *layer = [[CAShapeLayer alloc] init];

layer.frame = view.bounds;

layer.path = path.CGPath;

view.layer.mask = layer;

}

#pragma mark - 通過Graphics 和 BezierPath 設置圓角

- (void)setGraphicsCutCirculayWithView:(UIImageView *) view roundedCornersSize:(CGFloat )cornersSize

{

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 1.0);

[[UIBezierPath bezierPathWithRoundedRect:view.bounds cornerRadius:cornersSize] addClip];

[view drawRect:view.bounds];

view.image = UIGraphicsGetImageFromCurrentImageContext();

// 結束

UIGraphicsEndImageContext();

}

@end

最好的是通過Graphics 和 BezierPath 設置圓角
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved