ここで他の人が指摘しているように、UIRoundedRectButtonをサブクラス化することはできません。ただし、initメソッドでいくつかのCALayerプロパティを設定することにより、ボタンを丸みを帯びたrectボタンのように見せることができます。
#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で「RoundedRect」ボタンスタイルを引き続き使用して、レイアウトの正しい外観を提供できますが、カスタムボタンのロード時にスタイルは無視されます。自動レイアウトが有効になっている場合は、IBスタイルを「カスタム」に変更する必要があります。そうしないと、ボタンフレームが期待どおりに動作しないことがわかります。