圖片圓角處理,圖片圓角

來源:互聯網
上載者:User

圖片圓角處理,圖片圓角

問到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 設定圓角

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.