アプリの UIButton サブクラスを作成しましたが、ボタンの高さの約 1/4 になるように titleLabel を手動で再配置する必要があります。この郵便受け; http://forums.macrumors.com/showthread.php?t=763140は同じ問題に直接対処しているようで、解決策はシンプルで完全に理解できます。ただし、layoutSubviews のオーバーライドが呼び出されないため、これを実装できませんでした。私のボタンは静的なので、layoutSubviews は初めて呼び出す必要がありますが、決してそうではありません。私のコード:
@interface MyButton : UIButton {}
@implementation MyButton
- (id)initWithFrame:(CGRect)frame
{
self = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
[[self layer] setCornerRadius:14.0f];
[[self layer] setBorderWidth:3.0f];
[[self layer] setMasksToBounds:YES];
[self setBackgroundColor:[UIColor redColor]];
[self setFrame:frame];
return self;
}
- (void)layoutSubviews
{
NSLog(@"layout subs\n");
[super layoutSubviews];
}
@end
ラベルの移動は問題ありませんが、layoutSubviews が呼び出されることはありません。私もlayoutIfNeededを追加しようとしましたが、違いはありませんでした。さらに奇妙なことに、コンストラクターから直接 [self layoutSubviews] を呼び出そうとしましたが、layoutSubviewsはまだ呼び出されていません。これはSDK 3.1.3のバグかもしれないと思い始めています
誰か助けてくれませんか?!