我有一个UIButton,根据我的应用程序有4个不同的状态。
state-1 normal.
state-2 selected.
state-3 highlighted , going normal-to-selected.
state-4 highlighted , going selected-to-normal.按钮最初处于正常状态,当我按下它时,它会进入选中状态,并在这些状态之间切换。
这是通过为两个状态指定图像并更改选定属性来实现的。
然而,在每个状态改变时,我需要改变突出显示的状态图像,以确保它在被按下时代表状态3和状态4中的任何一个。
问题是,当从selected变为normal时,UIButton看起来没有突出显示状态。
所以现在我保留了一个BOOL ivar来检查我的视图中的选择状态。并保持按钮处于正常状态,并根据BOOL ivar的值在每次操作时将其图像更改为突出显示状态和正常状态。
有没有更简单的方法来实现这一点?
发布于 2013-04-08 20:21:39
这样做的原因是状态是两个值的混合。
一些最常见的
UIControlStateNormal,
UIControlStateHighlighted,
UIControlStateDisabled,
UIControlStateSelected,
UIControlStateSelected | UIControlStateHighlighted,
UIControlStateSelected | UIControlStateDisabled,所以如果你想在selected的时候有一个highlighted状态,那么我更喜欢这样做。
[button setImage:imageHighlighted forState:UIControlStateSelected | UIControlStateHighlighted];如果一般规则是选中时始终具有相同的突出显示状态,则可以执行以下操作
UIControlState mixedState = UIControlStateSelected | UIControlStateHighlighted;
[button setImage:[button imageForState:state] forState:state];
[button setBackgroundImage:[button backgroundImageForState:state] forState:state];
[button setTitleColor:[button titleColorForState:state] forState:state];诸若此类
发布于 2013-04-08 20:10:14
将突出显示的状态保存在Boolean变量中是跟踪状态的常用方法,但是这里有一些东西可以简化您的代码。
有一个在UIControl上调用的setHighlighted方法,您可以覆盖它。您可以在其中设置变量,而不是在多个操作中设置变量:
-(void)setHighligted:(BOOL) highlighted {
self.mySavedHighlightedState = highlighted;
}创建一个具有mySavedHighlightedState属性的自定义UIButton类来实现这一点。
https://stackoverflow.com/questions/15878555
复制相似问题