使 UIView 的特定角为圆形
Posted
技术标签:
【中文标题】使 UIView 的特定角为圆形【英文标题】:Make specific corners of UIView round 【发布时间】:2012-12-28 10:10:09 【问题描述】:我做了一些研究,我明白了,没有简单的方法可以 只把 UIView 的右上角和左上角变成圆形,对吧?
ps。此代码使所有 4 个角都变圆,这是 smth。我不要。
#import <QuartzCore/QuartzCore.h>
self.layer.cornerRadius = 5;
self.layer.masksToBounds = YES;
【问题讨论】:
***.com/questions/4847163/… how to set cornerRadius for only top-left and top-right corner of a UIView?的可能重复 【参考方案1】:你可以用这个 sn-p 做到这一点:
// Set top right & left corners
[self setMaskTo:yourView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight];
编辑
对不起,我忘了这个
- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
UIBezierPath *rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds
byRoundingCorners:corners
cornerRadii:CGSizeMake(8.0, 8.0)];
CAShapeLayer *shape = [[CAShapeLayer alloc] init];
[shape setPath:rounded.CGPath];
view.layer.mask = shape;
PS:正如我在评论中所说,如果你在显示UITableViewCell
单元格时使用这样的东西,我发现使用背景图像总是更好的选择,因为这种绘图东西总是会影响性能。
【讨论】:
仅供参考,如果您在显示UITableViewCell
单元格时使用这样的东西,我发现使用背景图像总是更好的选择,因为这种绘图东西总是会影响性能。
这个评论可能应该在答案中说,屏蔽视图对性能有很大影响,如果你能提供帮助,应该始终使用背景图像
感谢评论它有效!附言。无论如何,我没有将它用作 UITableViewcell,即使我真的不知道如何使用背景图像来做到这一点...... :(((但无论如何谢谢。
@amb +1 不错的答案徽章在路上:)
我已经尝试过了,但它只适用于左上角和左下角,不适用于其他右下角和右上角。请提出建议。【参考方案2】:
我尝试过一次 UIView 的扩展,但它对我不起作用,因为它在绘制单元格时引起了问题
我现在通过两个步骤得到了一个更好、更简单的解决方案,效果非常好:)
1) 一行代码 (Swift 2.0) - 它环绕视图的所有 4 个角:
YourView.layer.cornerRadius = 10
2) 并在情节提要中添加一个添加 1 个带有常规角的视图,您不需要圆角并根据需要调整约束: 请注意,小常规角视图应位于主视图后面。 This is how it looks in storyboard
Here you can see constraints needed for the small view
【讨论】:
以上是关于使 UIView 的特定角为圆形的主要内容,如果未能解决你的问题,请参考以下文章
没有混合层的圆形 UIView(带cornerRadius)