正如其他人在這裏指出的,你不能繼承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樣式更改爲「自定義」,否則您會發現按鈕框架的行爲不符合您的期望。
根據我的經驗,不,IB不能解釋您的設計決策(尤其是那些內置的代碼)並在運行之前渲染它們。 – 2013-02-08 16:26:55
您不能在Interface Builder中使用您的子類。您必須以編程方式將它們添加到視圖中 – Luke 2013-02-08 17:07:45
@Luke:您可以在IB中使用UIButton子類 - 我一直都在使用它。當我自定義按鈕(這是99%的時間)時,這工作正常,但如果我想要一個子類型的圓角矩形按鈕,顯然不起作用。 – MusiGenesis 2013-02-08 17:20:55