禁用按钮不改变形象(Disabled buttons not changing image in)

2019-10-20 02:48发布

我有一个按钮,按下一个设定viewController 。 在那设置viewController我有一个开关反转原始视图中的所有颜色,我已经使用编程方式完成反转。 我做了倒按钮图像,以取代原来的图像。

当我回到原来的观点,我有viewWillAppear调用该方法反转如果开关已被翻转。 一切都在变化因此除了两个禁用按钮。

开关值在默认设置下保存,以便用户可以退出应用程序,稍后再回来,仍然有反转的颜色。 当viewDidLoad调用转化方法,按钮更改就好了,他们甚至出现调整,显示他们是残疾人。

任何想法可能什么呢?

-(void)invert{

self.view.backgroundColor = [UIColor blackColor];

//Buttons
[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
                 forState:UIControlStateNormal];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
                 forState:UIControlStateNormal];
}

-(void)viewWillAppear:(BOOL)animated{

    _inverted = 
      [[NSUserDefaults standardUserDefaults] boolForKey:@"isInvertedOn"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    if(_inverted){
        [self invert];
    } else {
        [self unInvert];
    }
    [super viewWillAppear:(BOOL)animated];
}

Answer 1:

这个问题似乎是,图像不会自动更新,则需要重新设置enabled值,使其工作:

[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
                 forState:UIControlStateNormal];
self.stopButton.enabled = ! self.stopButton.enabled;
self.stopButton.enabled = ! self.stopButton.enabled;

[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
                 forState:UIControlStateNormal];
self.playButton.enabled = ! self.playButton.enabled;
self.playButton.enabled = ! self.playButton.enabled;


Answer 2:

我认为,应用图像之前要禁用STOPBUTTON为playButton。 另外,贵公司所申请UIImageUIButton正常UIControlState 。 我建议做以下的代码更改

更改此

//Buttons
[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
                 forState:UIControlStateNormal];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
                 forState:UIControlStateNormal];

//Buttons
[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
                 forState:UIControlStateDisabled];        
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
                 forState:UIControlStateDisabled];

总之,你必须设置UIButton UIImages处于禁用状态。

欲了解更多参考看看这个问题回答的Xcode:只为默认状态设置按钮图像,也不能选择

如果将UIImages根据状态UIButton然后在要反转功能UIImage ,你只需要处理的状态UIButton ,它会自动更改图像。



Answer 3:

谢谢您的帮助。 这里是我想出了答案,通过A-Live的回答启发。

首先,我不得不设置按钮启用,然后设置图像,然后再次关闭全部在相同的方法按钮。 这已固定我的问题。

[self.playButton setEnabled:YES];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]forState:UIControlStateNormal];
[self.playButton setEnabled:NO];


Answer 4:

尝试使用:

theButton.adjustsImageWhenDisabled = false

这将使用您的自定义图像,而不是默认的调光。



文章来源: Disabled buttons not changing image in