在iOS应用程序中的UIButtons上全局设置圆角

时间:2014-01-04 16:51:06

标签: ios uibutton uiappearance

有没有办法在全局范围内设置圆角的UIButtons,如下面的颜色?

[[UIButton appearance] setBackgroundColor:[UIColor purpleColor]];

4 个答案:

答案 0 :(得分:3)

您可以使用UIAppearance设置的属性列表位于:

What properties can I set via an UIAppearance proxy?

不幸的是圆角不是可能的。

您可以使用美化(https://github.com/beautify/beautify-ios)之类的东西来增强UIKit控件,以允许您指定圆角按钮。

通过美化,以下内容将为您提供全局圆形按钮:

BYTheme *theme = [BYTheme new];
theme.buttonStyle.border = [[BYBorder alloc] initWithColor:[UIColor blackColor]
                                                     width:2.0f
                                                    radius:5.0f];

[[BYThemeManager instance] applyTheme:theme];

答案 1 :(得分:1)

我找到了这个链接。请看看它是否有帮助。

Taming UIButton

正在使用此

[[basicButton layer] setCornerRadius:18.0f];

正如我在之前的回答中提到的那样。你必须为它继承UiButton .. :))

答案 2 :(得分:0)

#import <QuartzCore/QuartzCore.h>

在头文件中添加。

然后在实施中,

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(100, 100, 100,50);
[btn setTitle:@"Hello" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f  blue:0.0/255.0f alpha:0.7]];
btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same  value
btn.clipsToBounds = YES;

btn.layer.cornerRadius = 20;//half of the width
btn.layer.borderColor=[UIColor redColor].CGColor;
btn.layer.borderWidth=2.0f;

cornerRadius将为您解决问题。如果需要更多信息,请告诉我.. :)

修改

这在全球范围内无法实现。当您使用appearencehere is the list查看可以使用UIAppearance自定义的内容时。你可以做的是你可以创建你的UIButton的子类,&amp;在那里,您可以在setCornerRadius方法中编写initWithCoder的实现。

答案 3 :(得分:0)

将可行解决方案的建议迁移到Swift(也可以在UIView上使用等效的ObjC类别):

1。添加此扩展程序https://gist.github.com/d3ce2e216884541217d0

2。代码:

let a = UIButton.appearance()
a.layerCornerRadius = 20.0
a.layerBorderColor = UIColor.redColor().CGColor
a.layerBorderWidth = 2.0

这种黑客行为是因为如何复制属性。对appearancea.layer之类的所有a.titleLabel更改都不会传播,但扩展属性会被复制