Ios 禁用的按钮不更改中的图像
我有一个按钮,可以按下设置Ios 禁用的按钮不更改中的图像,ios,objective-c,uibutton,viewwillappear,uicontrolstate,Ios,Objective C,Uibutton,Viewwillappear,Uicontrolstate,我有一个按钮,可以按下设置viewController。在该设置中,我有一个开关,可以反转原始视图上的所有颜色,这是我通过编程实现的反转。我制作了反转按钮图像来替换原始图像 当我返回到原始视图时,如果开关已翻转,我将调用该方法以反转视图。除两个禁用的按钮外,所有内容都会相应更改 开关值保存在默认设置下,这样用户可以退出应用程序,稍后再回来,并且仍然可以反转颜色。当viewDidLoad调用invert方法时,按钮变化很好,甚至显示为调整后显示为禁用 知道会发生什么吗 -(void)invert{
viewController
。在该设置中,我有一个开关,可以反转原始视图上的所有颜色,这是我通过编程实现的反转。我制作了反转按钮图像来替换原始图像
当我返回到原始视图时,如果开关已翻转,我将调用该方法以反转视图。除两个禁用的按钮外,所有内容都会相应更改
开关值保存在默认设置下,这样用户可以退出应用程序,稍后再回来,并且仍然可以反转颜色。当viewDidLoad
调用invert方法时,按钮变化很好,甚至显示为调整后显示为禁用
知道会发生什么吗
-(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];
}
我认为您在应用图像之前禁用了停止按钮和播放按钮。而且您正在为
ui按钮normalUIControlState
应用UIImage
。我建议做以下代码更改
改变这个
//Buttons
[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
forState:UIControlStateNormal];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
forState:UIControlStateNormal];
到
简而言之,您必须将ui按钮设置为禁用状态
有关更多参考,请查看此问题的答案
如果根据ui按钮的状态设置ui图像
,则在要反转ui图像
的功能中,只需处理ui按钮的状态
,它就会自动更改图像 问题似乎是图像没有自动更新,您需要重置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;
谢谢你的帮助。以下是我根据A-Live的答案得出的答案
首先,我必须将按钮设置为已启用,然后设置图像,然后再次禁用按钮,所有操作都在同一方法中进行。这解决了我的问题
[self.playButton setEnabled:YES];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]forState:UIControlStateNormal];
[self.playButton setEnabled:NO];
尝试使用:
theButton.adjustsImageWhenDisabled = false
这将使用您的自定义图像而不是默认暗显。播放反转图像应为状态uicontrol状态正常而不是uicontrol状态禁用。Yes@pawan.its MScottWaller选择他必须应用的图像和位置。我们的任务是引导他。播放反转图像被禁用,因为用户尚未选择文件。当用户选择一个文件时,它将被启用。您是否总是禁用带有反转图像的按钮(代码看起来像您这样)?在这种情况下,使用UIControlStateDisabled
的解决方案会更好,因为您只需设置一次图像。不幸的是,如果我将其设置为UIControlStateDisabled,则按钮没有禁用状态。它不是轻的,比如低阿尔法。如果我按上面的方法操作,应用程序会记得禁用按钮并给它一个亮起的状态。这是iOS 7引入的一个bug。如果在禁用按钮时设置图像。什么也没发生。
theButton.adjustsImageWhenDisabled = false