【问题标题】:Setting a UIButton alpha is not working correctly on iOS 7.设置 UIButton alpha 在 iOS 7 上无法正常工作。
【发布时间】:2014-03-28 02:21:51
【问题描述】:

我来回禁用和更改 UIButton 的 alpha,当调用该方法时,它启用按钮,alpha 永远不会改变。

下面的代码在包含按钮的实际 ViewController 中。但我从显示此 ViewController 的不同 ViewController 调用这些方法。

-(void)enableArrow {

    [self.LocationCirlceButton setEnabled:YES];
    [self.LocationCirlceButton setAlpha:1.0f];

}

-(void)disableArrow {
    [self.LocationCirlceButton setEnabled:NO];
    [self.LocationCirlceButton setAlpha:0.5f];
}

而且,是的,这个 UI 工作正在主线程上完成。

【问题讨论】:

  • 按钮最初是隐藏的吗?
  • 什么样的uibutton?

标签: ios iphone objective-c uiviewcontroller uibutton


【解决方案1】:

发现了问题,但很奇怪。我将以下图像设置为禁用,但是该文件以某种方式从应用程序中删除。所以我把它改成了Checkmark_normal文件,一切正常。

 setImage:[UIImage imageNamed:@"Checkmark_disabled.png"] forState:UIControlStateDisabled];

现在:

 setImage:[UIImage imageNamed:@"Checkmark_normal.png"] forState:UIControlStateDisabled];

【讨论】:

  • 这并不奇怪。当UIImageViewUIButtonUIImage 的任何容器找不到指定的图像时,它总是显示容器的background color。我猜你的背景颜色是[UIColor clearColor]
  • 但它显示的是正常或选中的其他图标之一。它没有显示任何内容,而是显示正常图像或选定图像。
【解决方案2】:

UIButton 设为公共属性并在that different ViewController 而不是ViewController contains the button 中创建方法怎么样?

像这样:

-(void) enableButton
{
    [originalController.button setAlpha:1.0f];
}

-(void)disableButton
{
    [originalController.button setAlpha:0.0f];
}

关键是你必须抓住那个特定的ViewController contains the button 才能使它工作(有很多方法可以做到这一点)。

【讨论】:

    【解决方案3】:

    有两个子视图可以控制。你可以打电话

    myButton.imageView.alpha = 0.5;
    myButton.titleLabel.alpha = 0.5;
    

    或者你可以继承按钮并覆盖setEnabled:

    -(void)setEnabled:(BOOL)enabled
    {
        super.enabled = enabled;
        self.imageView.alpha = enabled ? 1 : 0.5;
        self.titleLabel.alpha = self.imageView.alpha;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多