我正在尝试找到实现圆角矩形的最佳方法(例如像iPhone图标一样松动)。我的搜索建议使用UIBezierPath。
为了测试该类,我创建了一个新的xcode模板(单视图应用程序),并且基本上只是在ViewController的viewDidLoad中添加了以下行:
UIBezierPath* path = [UIBezierPath
bezierPathWithRoundedRect: CGRectMake(10, 10, 120, 120)
cornerRadius: 5];
[[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0] setFill];
[path stroke];
[path fill];
现在我得到了几个“......无效的上下文0x0错误......”。我假设我必须先设置一个上下文?!但是,我该怎么做或者如果不修复那些错误呢?
我对这个错误的搜索提出了一些帖子。不幸的是,所有这些似乎都有相当复杂的编码。我很确定我在这里只有一个非常基本的误解。
谢谢!
答案 0 :(得分:2)
您可以使用此功能并在视图的图层中指定
UIBezierPath *maskpath=[UIBezierPath bezierPathWithRoundedRect:view1.bounds
byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerBottomRight
cornerRadii:CGSizeMake(10.0,10.0)];
CAShapeLayer *maskLayer=[CAShapeLayer layer];
maskLayer.frame=view1.bounds;
maskLayer.path=maskpath.CGPath;
[view1.layer addSublayer:maskLayer];
答案 1 :(得分:0)
如果它对其他人有帮助:基于johnykumar提供的代码和另一篇关于类似主题的帖子:
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
CGRect frame = CGRectMake(50.0, 50.0, 150.0, 150.0);
CGFloat radius = 20.0;
UIView *frontView = [[UIView alloc] initWithFrame:frame];
frontView.backgroundColor = [UIColor redColor];
CAShapeLayer * maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRoundedRect:frontView.bounds
byRoundingCorners:UIRectCornerAllCorners
cornerRadii:CGSizeMake(radius, radius)].CGPath;
frontView.layer.mask = maskLayer;
[self.view addSubview:frontView];
}