iOS:UIButton 不显示

Posted

技术标签:

【中文标题】iOS:UIButton 不显示【英文标题】:iOS: UIButton doesn't show up 【发布时间】:2014-10-29 16:07:30 【问题描述】:

我正在创建一个简单的按钮并将其作为子视图添加到主视图。但它没有显示出来。

这是设置它的代码:

UIButton* contactButton = [[UIButton alloc] init];
contactButton.titleLabel.text = @"Contact Developer";
[contactButton sizeToFit];
[self.view addSubview:contactButton];
NSLog(@"X: %f || Y: %f || Width: %f || Height: %f", contactButton.frame.origin.x, contactButton.frame.origin.y, contactButton.frame.size.width, contactButton.frame.size.height);

您可能已经注意到,我在最后放置了一些调试代码来查看按钮的位置和尺寸。它们是:X:0,Y:0,宽度:30,高度:34

这意味着它应该显示在左上角,但它没有。怎么了?

【问题讨论】:

不要直接设置标题标签。请改用setTitle:forState: 【参考方案1】:

一个可能的原因是您直接使用了titleLabel。考虑改用setTitle:forState: 方法。

为了确定,请考虑将backgroundColor 设置为调试步骤,以确保它出现。


编辑正如其他人建议的那样,尝试使用buttonWithType: 而不是[[UIButton alloc] init]。我建议使用UIButtonTypeSystem 而不是UIButtonTypeCustom

【讨论】:

谢谢。这使按钮可见,但是每当我单击它时,它都不会像其他按钮那样变暗。这有什么问题? 这可能和你allocit的方式有关。按照其他答案的建议尝试buttonWithType:,但我建议使用UIButtonTypeSystem 而不是UIButtonTypeCustom,因为您没有任何自定义行为。 非常感谢。那解决了它。我还使用contactButton.tintColor 将自定义蓝色更改为更体面的颜色。【参考方案2】:

您应该使用以下方法初始化按钮:

UIButton* contactButton = [UIButton buttonWithType:UIButtonTypeCustom];

【讨论】:

【参考方案3】:

尝试以不同的方式构建您的按钮:

UIButton* contactButton = [UIButton buttonWithType:UIButtonTypeCustom];
contactButton.backgroundColor = [UIColor redColor];
contactButton.titleLabel.text = @"Contact Developer";
[contactButton sizeToFit];
[self.view addSubview:contactButton];

【讨论】:

【参考方案4】:

您确定没有显示按钮吗?

我认为您错误地设置了按钮的标题,并且由于默认 UIButton 具有清晰的背景和白色标题这一事实,如果您的超级视图也是白色的,则它不可见。 而不是设置:contactButton.titleLabel.text = @"Contact Developer" 使用:[contactButton setTitle:@"Contact Developer" forState:UIControlStateNormal]

但您可以先尝试为按钮设置backgroundColor,与超级视图不同,以查看是否已添加。

希望对您有所帮助! (如果我有错误,对不起我的英语)

【讨论】:

谢谢,这与 Mohannad A. Hassan 的建议差不多,而且效果很好。 是的,很抱歉“重复”,直到我发布我的答案,我才看到他的答案。

以上是关于iOS:UIButton 不显示的主要内容,如果未能解决你的问题,请参考以下文章

刚学习ios开发,UIButton控件显示不出来,求帮助~

UIButton 上不显示标题

IOS中UIButton和UIImageView的区别

具有突出显示不透明度和动画的圆形 UIButton

UIButton 未使用 Swift 在 UIView 中显示

UIButton 在 iOS7 中似乎没有选中状态标题?