我有一个按钮,按下一个设定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];
}
这个问题似乎是,图像不会自动更新,则需要重新设置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;
我认为,应用图像之前要禁用STOPBUTTON和为playButton。 另外,贵公司所申请UIImage
为UIButton
正常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
,它会自动更改图像。
谢谢您的帮助。 这里是我想出了答案,通过A-Live的回答启发。
首先,我不得不设置按钮启用,然后设置图像,然后再次关闭全部在相同的方法按钮。 这已固定我的问题。
[self.playButton setEnabled:YES];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]forState:UIControlStateNormal];
[self.playButton setEnabled:NO];
尝试使用:
theButton.adjustsImageWhenDisabled = false
这将使用您的自定义图像,而不是默认的调光。