前提:我正在用一个坚实的背景围绕一个视图的边缘(做一个像椭圆形的东西)。有很多方法可以做到这一点,但我推荐的两个最常见的方法是:
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路径来设置角半径(假设角半径相等)?创建圆边的这两种方法在幕后做同样的事吗?是否有某些平台不支持这两种解决方案?
最好的问候