我为我的应用程序创建了一个 UIButton 子类,我需要手动将 titleLabel 重新定位为按钮高度的 1/4 左右。这个帖子; 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 中的错误
谁能帮忙?!