ios – 如何清除UIButton的某些状态的图像?

前端之家收集整理的这篇文章主要介绍了ios – 如何清除UIButton的某些状态的图像?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在打卡片游戏.我想要卡片显示一张图像,卡片前面显示卡片内容.我已经将图像显示在背面,但是我无法确定当它被选中时如何清除它. (所有的run-this-code-when-it -s选择的代码正在运行,所以我知道这不是一个不是实际上改变状态的问题.)这是我的代码
-(void)updateUI {
for (UIButton *cardButton in self.cardButtons) {
    Card *card = [self.game cardAtIndex:[self.cardButtons indexOfObject:cardButton]];
    [cardButton setTitle:card.contents forState:UIControlStateSelected];
    [cardButton setTitle:card.contents forState:UIControlStateSelected | UIControlStateDisabled];
    [cardButton setImage:[UIImage imageNamed:@"cardback.png"] forState:UIControlStateNormal];

//I've tried varIoUs permutations of the following three lines,but the image never disappears.

    [cardButton setImage:nil forState:UIControlStateSelected];
    [cardButton setImage:nil forState:UIControlStateSelected | UIControlStateHighlighted];
    [cardButton setImage:nil forState:UIControlStateNormal];

    cardButton.selected = card.faceUp;
    cardButton.alpha=(card.unplayable ? 0.3:1.0);
    [self.scoreLabel setText:[NSString stringWithFormat:@"score: %d",self.game.score]];
}
}

对我做错了什么的想法?

解决方法

我猜你的问题是这个(从苹果文档的setImage:forState :):

In general,if a property is not specified for a state,the default is to use the UIControlStateNormal value. If the UIControlStateNormal value is not set,then the property defaults to a system value. Therefore,at a minimum,you should set the value for the normal state.

因此,您不能简单地取消某些状态的图像,因为默认图像将被使用.

我看到这个问题的几个解决方案:

>将透明图像用于要显示的状态,而不是零
>给你的卡一个UIImageView子视图你设置回卡片.如果卡正面朝下,请使用setHidden:显示子视图.如果卡正面朝上,请使用setHidden:隐藏子视图.我可能会使用自定义按钮类中的 – addTarget:action:forControlEvents:方法注册显示或隐藏卡回子视图的自定义方法.

请注意,您可以通过在子视图中显示卡片的前端,轻松取得选项2,然后您可以轻松地在两个子视图之间进行翻转过渡动画,以便卡片在按下时“翻转”.

猜你在找的iOS相关文章