答案 0 :(得分:0)
你需要:
CAShapeLayer
CGPathRef
将其路径设置为view.bounds
,但只有两个圆角(可能使用[UIBezierPath
bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]
)CAShapeLayer
请注意,这会对性能产生不良影响。 This might help
答案 1 :(得分:0)
您可以使用CALayer
用户。
CALayer *l = [_btn layer];
[l setMasksToBounds:YES];
[l setCornerRadius:8.0];
并添加QuartzCore.framework
答案 2 :(得分:0)
您可能希望继承UIView
并覆盖drawRect:
方法。然后将地图添加为子视图。您的drawRect:
方法看起来像这样(clipsToBounds
设置为YES
):
- (void)drawRect:(CGRect)rect
{
UIColor *fillColor = [UIColor clearColor];
UIColor *borderColor = [UIColor redColor];
float borderWidth = 2.0f;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, fillColor.CGColor);
CGContextSetLineWidth(context, borderWidth);
CGContextSetStrokeColorWithColor(context, borderColor.CGColor);
CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMidY(rect));
CGContextAddArc(context, CGRectGetMidX(rect), CGRectGetMidY(rect), rect.size.height/2, 2*M_PI, M_PI, 1);
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathFillStroke);
}
或者,您可以查看使用半圆图像进行遮罩或为图像视图创建CAShapeLayer
。