UIButton.titleLabel.frame.size始终为零值

时间:2016-04-22 10:04:54

标签: ios objective-c xcode uibutton

我在Objective C上用xcode开发了一个项目。在过去两天之前一切都很好。现在我的所有按钮和其他控件都不显示标题文本或图像。我尝试从故事板添加新按钮,但文本仍未显示。 此外,我尝试从代码添加新按钮,但结果相同。

- (void) addTestButtonProgramatically {
    testButton = [UIButton buttonWithType:UIButtonTypeCustom];
   [testButton addTarget:self
           action:@selector(testButtonSelector:)
   forControlEvents:UIControlEventTouchUpInside];
   [testButton setTitle:@"TEST TEXT" forState:UIControlStateNormal];
   [testButton setBackgroundColor:[UIColor colorWithRed:0.6 green:0.1 blue:1.0 alpha:1.0]];
   testButton.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
   [self.view addSubview:testButton];
}


- (IBAction)testButtonSelector:(id)sender {
     [testButton.titleLabel sizeToFit]; //this row make text of my button shown
}

也许我错误地改变了造成这种行为的设置。我尝试在另一台计算机上吃午餐,问题仍然存在。

然后我尝试创建新的清晰项目,一切都很好,按钮文本可见。

编辑:

我找到了问题的原因。这是因为我在UIButton类别上重新定义了 - (void)layoutSubvies方法。

@interface UIButton (Coordinator)
@end

@implementation UIButton (Coordinator)
- (void) layoutSubviews {
     [super layoutSubviews];    
}
@end

所有帮助我的人都能找到。

1 个答案:

答案 0 :(得分:1)

[testButton.titleLabel sizeToFit]添加到addTestButtonProgramatically方法。为什么你在它自己的点击中适合按钮文字的大小..?!。你应该在设置按钮

时这样做

更新:

 [self.button layoutIfNeeded]; // call this after adding button in view if you are using autolayout