我爲我的應用程序創建了一個UIButton子類,我需要手動將titleLabel重新定位到按鈕高度的1/4左右。這個帖子; http://forums.macrumors.com/showthread.php?t=763140似乎直接解決相同的問題,並且解決方案很簡單,完全可以理解。然而,我沒有實現這一點,因爲我的重寫layoutSubviews永遠不會被調用。我的按鈕是靜態的,所以layoutSubviews只需要第一次調用,但它永遠不會。我的代碼:手動定位標題標籤在自定義UIButton中(使用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中的一個bug。
任何人都可以幫忙嗎?!