2016-12-16 7 views
1

Я попытался установить прямоугольник с закругленными кнопками. Но они применяются только справа от дна.как установить angleRadius для RoundedRectagle только внизу слева, справа внизу UIButton?

Я хочу, чтобы обе стороны нижней кнопки имели закругленный прямоугольник. Это мой код:

UIBezierPath *shapePath = [UIBezierPath bezierPathWithRoundedRect:registerbtn.bounds 
                byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight 
                 cornerRadii:CGSizeMake(9.0, 9.0)]; 

CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
shapeLayer.frame = registerbtn.bounds; 
shapeLayer.path = shapePath.CGPath;  
[registerbtn.layer addSublayer:shapeLayer]; 

Выход:

enter image description here

ответ

0

попробовать это

CAShapeLayer * maskLayer1 = [CAShapeLayer layer]; 
    maskLayer1.path = [UIBezierPath bezierPathWithRoundedRect: registerbtn.bounds byRoundingCorners: UIRectCornerBottomRight | UIRectCornerBottomLeft cornerRadii: (CGSize){9.0, 9.0}].CGPath; 

    registerbtn.layer.mask = maskLayer1; registerbtn.layer.cornerRadius=9;                // this value vary as per your desire 
    registerbtn.clipsToBounds = YES; 
0

Это работает отлично. просто попробуйте его

UIBezierPath *shapePath = [UIBezierPath bezierPathWithRoundedRect:registerbtn.bounds 
               byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) 
                 cornerRadii:CGSizeMake(9.0, 9.0)]; 

CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
shapeLayer.frame = registerbtn.bounds; 
shapeLayer.path = shapePath.CGPath; 

[registerbtn.layer addSublayer:shapeLayer]; 
+0

это не работает ... тот же результат будет отображаться –

+0

просто попробуйте этот код. https://github.com/joprithiviraj/ButtonCornerRadius –

+0

@bhavin Ramani, ваш ответ правильный, но он спрашивает только радиус в правом углу. Поэтому не нужно использовать UIRectCornerBottomLeft. Спасибо .... –

0

Ваш код выглядит хорошо.

Просто написать тот же код в viewWillAppear и проверить:

-(void)viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:animated]; 

    UIBezierPath *shapePath = [UIBezierPath bezierPathWithRoundedRect:registerbtn.bounds 
                byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight 
                 cornerRadii:CGSizeMake(9.0, 9.0)]; 

    CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 
    shapeLayer.frame = registerbtn.bounds; 
    shapeLayer.path = shapePath.CGPath; 

    [registerbtn.layer addSublayer:shapeLayer]; 
} 
+0

да его работая спасибо –

+0

Отлично! .. HTH @ user7306261 –

0

Вышеуказанные ответы должны работать, но проблема в том, ваша кнопка становится закругленный с обеих сторон, но его эффект не виден вам. Если вы проверите по масштабированию, вы увидите, что ваша кнопка заперта в угол, а затем над слоем, на котором вы добавили bezierpath, есть еще один слой.

let shapePath = UIBezierPath.init(roundedRect: view.bounds, byRoundingCorners: [UIRectCorner.BottomLeft,UIRectCorner.BottomRight], cornerRadii: CGSizeMake(8,8)) 
let newCornerLayer = CAShapeLayer() 
newCornerLayer.frame = view.bounds 
newCornerLayer.path = shapePath.CGPath; 
view.layer.mask = newCornerLayer 

Это должно сработать, но вам нужно быть осторожным, на котором вы применяете слой.