在 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 的图像之间创建标识符的主要内容,如果未能解决你的问题,请参考以下文章

缩放 UIImage 以适应 UIButton 的问题

UIImage在uibutton中查看图片标题

iOS:如何使用 UIButton 更改 UIImage [关闭]

如何在 UIImage 上像 UIButton 一样在点击时实现突出显示?

使用 UIButton 自定义 UITableViewCell:无法更改 UIImage

将PHAsset转换为UIImage后设置UiButton图像