我创建了一个继承自UIButton
的类。如果我向我的XIB添加圆形矩形按钮并将其类属性设置为UIButton
,它们将显示为圆角矩形按钮(但是我的自定义代码都没有被调用,因此按钮的行为就像普通按钮一样不是我想要的。如果我将IB中的这些按钮的类属性设置为我的自定义类UIButtonCustom
,它们在IB设计器中看起来仍然是圆角矩形按钮,但是当我运行应用程序时,按钮属于自定义类型(意味着它们出现按钮文本大多是空白的,因为我没有为按钮设置任何背景图像。
当应用程序实际运行时,有没有办法让这些按钮看起来像圆形的矩形按钮?
答案 0 :(得分:1)
您在xib上看到的圆角按钮是UIButton
的子类,即UIRoundedRectButton
我不认为你可以将它子类化,因为它没有记录(私有API)。
答案 1 :(得分:1)
正如其他人已经注意到的那样,你不能继承UIRoundedRectButton。但是,通过在init方法中设置一些CALayer属性,可以使按钮看起来像圆角矩形按钮。
#import "MyCustomButton.h"
#import <QuartzCore/QuartzCore.h>
@implementation MyCustomButton
- (id)initWithFrame:(CGRect)frame
//button created in code
{
self = [super initWithFrame:frame];
if (self) {
[self initialise];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder;
//button created in Interface Builder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initialise];
}
return self;
}
- (void)initialise;
{
self.layer.cornerRadius = 10.0f;
self.layer.borderWidth = 1.0f;
self.layer.borderColor = [[UIColor lightGrayColor] CGColor];
}
@end
如果禁用了自动布局,您可以继续在IB中使用“圆角矩形”按钮样式,以便在布局中为您提供正确的外观,尽管在加载自定义按钮时将忽略该样式。如果启用了自动布局,则必须将IB样式更改为“自定义”,否则您会发现按钮框的行为与预期不符。