0

第一个:Xcode 4.6 版(4H127),模拟器 6.1

所以...我执行以下操作。我的按钮(继承自 UIButton)从 nib 加载。然后我为 UIControlStateNormal 设置了图像。我有这样的事情: 按钮

之后我需要取消它:

[button setImage:nil forState:UIControlStateNormal];

然后我看到了这个: 错的按钮

检查差异:

按钮

错的按钮

所以标题布局正确,但图像仍然存在......

另外,如果我执行以下操作:

[button setImage:[UIImage new] forState:UIControlStateNormal];

我得到像第二个一样的结果,但没有图像(如预期的那样,但不完全,没有布局):

新图片

我真的对这里发生的事情很感兴趣?它真的很有趣,mb Apple 打破了一些东西?或者我只是做错了?但我已经做了很多次(设置图像-> nil),一切正常。

感谢您阅读 :) 我将不胜感激。

4

2 回答 2

0

这件事就在这里:我的 UIButton 子类覆盖 -layoutSubviews,其中使用某些标准设置 imageView.hidden。所以,如果 hidden 属性是 YES,当我调用 setImage:forState 时 - 这个 bug 发生了。

接下来是我的修复:我刚开始使用 alpha 属性而不是隐藏属性。(我知道这很脏,但这是我找到的最快的方法)

于 2013-03-15T03:48:01.817 回答
0

我已经为此编写了一个示例代码。

你的两个电话我都很好

 [self.myCustomButton setImage:nil forState:UIControlStateNormal];
 [self.myCustomButton setImage:[UIImage new] forState:UIControlStateNormal];

我认为,您可以设置BackGroundImage而不是image.

在此处输入图像描述

示例方法

-(IBAction)removeImage:(id)sender{

    [self.myCustomButton setImage:nil forState:UIControlStateNormal];
    //[self.myCustomButton setImage:[UIImage new] forState:UIControlStateNormal];
}

-(IBAction)setImage:(id)sender{

    [self.myCustomButton setImage:[UIImage imageNamed:@"Button_Disable.jpg"] forState:UIControlStateNormal]; 
}
于 2013-03-14T18:13:28.647 回答