UIButton的imageView在调整大小时变得不隐藏

Posted

技术标签:

【中文标题】UIButton的imageView在调整大小时变得不隐藏【英文标题】:UIButton's imageView becomes unhidden when resizing 【发布时间】:2014-06-09 17:20:12 【问题描述】:

考虑以下代码。在 ios 7.1 上测试

- (void)viewDidLoad 
    [super viewDidLoad];
    UIButton *button = [[UIButton alloc] init];
    [self.view addSubview:button];
    [button setTitle:@"Test" forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:@"Default"] forState:UIControlStateNormal];
    button.imageView.hidden = YES;
    [button sizeToFit];
    NSLog(button.imageView.hidden ? @"YES" : @"NO");
    //button's imageView is no longer hidden!

为什么 sizeToFit 会取消隐藏 imageView?

【问题讨论】:

我运行了你的代码,我从 NSLog 得到了是。您还在看到按钮顶部的图像吗?您不想只隐藏图像的按钮,对吧? @Yan 正确。我看到没有。您在哪个版本的 iOS 上进行测试? 这是 Xcode 5.1.1 和 iOS SDK 7.1 请注意,您必须设置要复制的图像。 是的,这就是我现在正在尝试的。一分钟后通知您。 【参考方案1】:

请尝试通过将 setImage 属性更改为 nil 来隐藏图像 -

[button setImage:nil forState:UIControlStateNormal];

而不是设置 hidden=YES 而不是手动调整按钮的大小。

【讨论】:

另外,这将影响使用图像的任何尺寸调整代码。

以上是关于UIButton的imageView在调整大小时变得不隐藏的主要内容,如果未能解决你的问题,请参考以下文章

iOS--UIButton图片在上,文字在下

iOS - UIButton 在显示操作表时变为灰色,然后在关闭操作表时变为蓝色

调整imageView大小后调整图像大小

ImageView 调整大小并保持纵横比

如何防止UIButton的imageView占用整个UIButton?

删除 ImageView 自动调整大小