在 UIImage 和 UIButton 的图像之间创建标识符
Posted
技术标签:
【中文标题】在 UIImage 和 UIButton 的图像之间创建标识符【英文标题】:Creating a identifier between a UIImage and the image of a UIButton 【发布时间】:2016-01-08 16:24:06 【问题描述】:我正在制作一个游戏,其中一个角色会有一个气球的想法和上面的一堆按钮。每五秒钟,气球的图像就会改变,按钮的组织也会改变。
我设法创建代码来制作此类图像,但我很难创建将按钮链接到气球的逻辑。这个想法是当显示气球的新图像时,用户必须单击与图像对应的按钮。
这里有一张图片更好地说明:
我尝试使用 Enums,但对我不起作用。这是我的代码:
enum PontuacaoJogo
case toddynho
case coxinha
case sushi
case coracao
case netflix
case ballonToddynho
case ballonCoxinha
case ballonSushi
case ballonCoracao
case ballonNetflix
var imagemNecessidades: UIImage
switch self
case .toddynho: return UIImage(named: "toddy_.png")!
case .coxinha: return UIImage(named: "coxinha_.png")!
case .sushi: return UIImage(named: "sushi_.png")!
case .coracao: return UIImage(named: "coracao_.png")!
case .netflix: return UIImage(named: "bedflix_1.png")!
default: ()
return imagemNecessidades
var imagemBaloes: UIImage
switch self
case .ballonToddynho: return UIImage(named: "toddy_.png")!
case .ballonCoxinha: return UIImage(named: "coxinha_.png")!
case .ballonSushi: return UIImage(named: "sushi_.png")!
case .ballonCoracao: return UIImage(named: "coracao_.png")!
case .ballonNetflix: return UIImage(named: "bedflix_1.png")!
default: ()
return imagemBaloes
之后,我尝试创建一个 If else 语句,将UIButton
的图像与气球的图像进行比较,但我找不到通用的东西,例如:
if imgBtn1.imageView.image == ballon.image
// makes point
因为按钮的图像和气球的图像有不同的名称。那么,我怎样才能做到这一点呢?
【问题讨论】:
【参考方案1】:我会推荐两个选项: UIViews 可以有一个标签,因此你可以用一个枚举 ID 来标记你的按钮。在不知道您的应用程序是如何设置的情况下,一些相关部分看起来类似于:
// Declare enums in some header
typedef NS_ENUM(NSInteger, PontuacaoJogo)
PontuacaoJogoSushi,
PontuacaoJogoNetflix
;
// When you create the thought bubble with the image needing to match
-(void)createThoughtBubble
//logic to choose image
self.thoughtBubbleID = PontuacaoJogoSushi;
//self.someImageView.image = [UIImage imageNamed:@"sushi"];
-(UIButton*)imagemBaloes:(PontuacaoJogo)buttonID
UIButton* someButton;
someButton.tag = buttonID;
//Tap delegate for the three buttons
-(IBAction)buttonTapped:(id)sender
UIButton* buttonTapped = (UIButton*)sender; //if typeof class etc....
if( buttonTapped.tag == self.thoughtBubbleID )
//Match
如果您要进一步扩展这些按钮,另一种方法是继承 UIButton 并为您的枚举添加属性; (在大多数游戏作品中可能都是这种情况)。
@interface SimonSaysButton : UIButton
@property (nonatomic) PontuacaoJogo imageID;
@end
无论哪种方式,我都不会比较图像是否相等,而是测试数据,在您的情况下是枚举值。
【讨论】:
【参考方案2】:我设法工作:
我使用的解决方案是创建两个数组,一个用于气球图像,另一个用于按钮图像。所以,在 if else 语句中,我比较了两个数组的索引并且工作了!
【讨论】:
以上是关于在 UIImage 和 UIButton 的图像之间创建标识符的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何使用 UIButton 更改 UIImage [关闭]
如何在 UIImage 上像 UIButton 一样在点击时实现突出显示?