cornerRadius和bezierPathWithRoundedRect之间的差异”>

问题描述 投票:3回答:1

Premise:

我正在用纯色背景对视图的边缘进行圆角处理(以制作椭圆形的东西)。有很多方法可以做到这一点,但是我推荐的两种最常见的方法是:

1)在视图层上设置cornerRadius属性,并将遮罩层绑定到视图层边界(通过clipsToBounds或masksToBounds)(https://developer.apple.com/reference/quartzcore/calayer/1410818-cornerradius)例如:

    view.layer.cornerRadius = 2
    view.layer.maskToBounds = true

2)使用[bezierPathWithRoundedRect:byRoundingCorners:cornerRadii]创建一个Bezier路径,并使用它来创建一个设置为视图图层蒙版的蒙版层。 (https://developer.apple.com/reference/uikit/uibezierpath/1624368-bezierpathwithroundedrect)例如:

    UIBezierPath* bezierPath = [UIBezierPath bezierPathWithRoundedRect: view.bounds 
      byRoundingCorners:UIRectCornerAllCorners 
      cornerRadii: CGSizeMake(2, 2)];
    CAShapeLayer* maskLayer = [CAShapeLayer layer];
    maskLayer.frame = view.bounds;
    maskLayer.path = bezierPath.CGPath;
    view.layer.mask = maskLayer;

问题:

两种方式都对我有效,我发现一种方式与另一种方式相比没有显着的性能(诚然,我并没有大量使用它)。在哪种情况下,应该在设置拐角半径时使用Bezier路径(假设拐角半径相等)?这两种创建圆形边缘的方法在幕后做同样的事情吗?是否有某些平台不支持这两种解决方案?

最佳问候

前提:我正在用纯色背景对视图的边缘进行圆角处理(以制作类似椭圆的东西)。有很多方法可以做到这一点,但我推荐的两种最常见的方法是:1)设置...

ios objective-c core-graphics uibezierpath cornerradius
1个回答
0
投票

本文很好地介绍了优缺点:https://yalantis.com/blog/mastering-uikit-performance/

© www.soinside.com 2019 - 2024. All rights reserved.