如何清理这个Objective C的cornerRadius代码?

时间:2018-12-13 09:33:24

标签: ios objective-c xcode

我对不同的按钮做了多次相同的事情。这是我当前的代码,我该如何清理一下以一次性应用相同的样式?

谢谢!

appExclusivesButton.layer.cornerRadius = 10;
appExclusivesButton.clipsToBounds = YES;

emailDealButton.layer.cornerRadius = 10;
emailDealButton.clipsToBounds = YES;

dotwButton.layer.cornerRadius = 10;
dotwButton.clipsToBounds = YES;

exclusiveButtonl.layer.cornerRadius = 10;
exclusiveButtonl.clipsToBounds = YES;

clearanceButton.layer.cornerRadius = 10;
clearanceButton.clipsToBounds = YES;


harlowButton.layer.cornerRadius = 10;
harlowButton.clipsToBounds = YES;
walthamstowButton.layer.cornerRadius = 10;
walthamstowButton.clipsToBounds = YES;
leytonButton.layer.cornerRadius = 10;
leytonButton.clipsToBounds = YES;
loughtonButton.layer.cornerRadius = 10;
loughtonButton.clipsToBounds = YES;

5 个答案:

答案 0 :(得分:3)

cornerRadiusclipsToBounds应用于所有按钮的简单方法是创建一个数组,在其中放置所有按钮。然后遍历数组中的按钮,并为所需的属性应用值。

示例用法:

for (UIButton *button in buttonArray) {
    button.layer.cornerRadius = 10;
    button.clipsToBounds = YES:
}

您可以将此方法与Sanjukta的答案结合起来,并编写一种为按钮设置cornerRadiusclipsToBounds(或任何其他属性)的方法。

答案 1 :(得分:2)

我将创建一个UIButton类别,该类别允许您设置拐角半径。 您可以创建一个工厂方法来返回带有圆角的新按钮,也可以创建一个将圆角应用于现有按钮的方法。

这是一个同时做这两个事的例子:

//  UIButton+RoundedCorners.h
@interface UIButton (RoundedCorners)

+(instancetype)buttonWithRoundedCorners;
-(void)addRoundedCorners;

@end


//  UIButton+RoundedCorners.m
@implementation UIButton (RoundedCorners)

+(instancetype)buttonWithRoundedCorners {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.layer.cornerRadius = 10;
    button.clipsToBounds = YES;
    return button;
}


-(void)addRoundedCorners {
    self.layer.cornerRadius = 10;
    self.clipsToBounds = YES;
}

@end

然后,如果您导入类别,则可以这样使用它:

 UIButton *myButton = [UIButton buttonWithRoundedCorners];

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton addRoundedCorners];

答案 2 :(得分:1)

通过使用uibutton的类别类。只需使uibutton的类别类添加您的方法即可添加半径,而所有这些都想添加到按钮上。只需将该类导入您的类并调用该方法即可。

答案 3 :(得分:0)

只是UIButton的子类,将您的样式代码放在此处 即

self.layer.cornerRadius = 10;

然后实例化您自己的UIButton类。

答案 4 :(得分:0)

我喜欢Rainer的回答(有时我也这样做)。但是,通过控件循环可能会很混乱,尤其是当按钮位于多个视图中时。我猜重构的方法是创建一个方法同时执行两件事,并向该方法提供按钮,就像这样:

-(void)stylizeButton:(UIButton*)btn {
  btn.layer.cornerRadius = 10.0f;
  btn.clipsToBounds = YES;
}

然后

[self stylizeButton:appExclusivesButton];
[self stylizeButton:emailDealButton];
[self stylizeButton:dotwButton];
[self stylizeButton:exclusiveButtonl];
[self stylizeButton:clearanceButton];
[self stylizeButton:harlowButton];
[self stylizeButton:walthamstowButton];
[self stylizeButton:leytonButton];
[self stylizeButton:loughtonButton];

仍然有些重复,但更有条理。

或者,您也可以考虑制作自己的自定义按钮 在情节提要中添加和样式化。此处的教程:https://www.sitepoint.com/creating-custom-ui-components-live-rendering-xcode/

相关问题