如何设置具有正确图层边框的圆角半径?

时间:2014-01-22 13:37:19

标签: ios ipad uiview layer mask

我正在创建uiview按钮

'Button = [UIButton buttonWithType:UIButtonTypeCustom];

颜色处于选定状态和正常状态。 关键是我想改变面具。使我的按钮具有一个半径角。

这样做我正在使用metod:

- (void)cornerMaskRadiusAtButton:(UIButton*)button leftSide:(BOOL)side
{
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = button.bounds;
    UIBezierPath *roundedPath;
    if(side){
    roundedPath =[UIBezierPath bezierPathWithRoundedRect:maskLayer.bounds
                          byRoundingCorners:UIRectCornerTopLeft |
     UIRectCornerBottomLeft
                                cornerRadii:CGSizeMake(18.f, 18.f)];
    }
    else{
        roundedPath = [UIBezierPath bezierPathWithRoundedRect:maskLayer.bounds
                              byRoundingCorners:UIRectCornerTopRight |
         UIRectCornerBottomRight
                                    cornerRadii:CGSizeMake(18.f, 18.f)];
    }
    maskLayer.path = [roundedPath CGPath];
    button.layer.mask = maskLayer;
}

但结果是这样的:

我打电话给这个方法之后:

[self cornerMaskRadiusAtButton:Button leftSide:NO];

Button.layer.borderColor = [UIColor whiteColor].CGColor;
Button.layer.borderWidth = 1.;

但边界错了。

enter image description here

如何修复边界线?

1 个答案:

答案 0 :(得分:2)

你不会看到你的图层边框beacouse你用你的图层面具切断它。 这就是为什么你只看到它的片段而不是其他的片段。他们被削减了。

最好的方法是为按钮创建图形并替换bacgroundimage 例如:

icon  = [UIImage imageNamed:@"name"];
[Button setBackgroundImage:icon  forState:UIControlStateNormal];

U可以设置其他状态:UIControlStateSelected 其他一些形象。