2017-07-05 10 views
2


myButtonに名前付き画像があるかどうかをチェックしたいと思います。ボタンにこの画像があるかどうかを確認する方法

私はこれを試してみたが、それは

if (myButton.currentImage?.isEqual(UIImage(named: "ButtonAppuyer.png")) != nil){ 
     print("YES") 
    } else { 
     print("NO") 
    } 

機能しないと、これはあまりにも

if myButton.currentImage?.isEqual(UIImage(named: "ButtonAppuyer.png")){ 
     print("YES") 
    } else { 
     print("NO") 
    } 
+0

が、私は私が拡張子を使用 –

答えて

3

ここで私はSwift 3.0で思いついたのです。

if let myButtonImage = myButton.image(for: .normal), 
    let buttonAppuyerImage = UIImage(named: "ButtonAppuyer.png"), 
    UIImagePNGRepresentation(myButtonImage) == UIImagePNGRepresentation(buttonAppuyerImage) 
{ 
    print("YES") 
} else { 
    print("NO") 
} 

これは多くクリーンアップできました。

extension UIButton { 
    func hasImage(named imageName: String, for state: UIControlState) -> Bool { 
     guard let buttonImage = image(for: state), let namedImage = UIImage(named: imageName) else { 
      return false 
     } 

     return UIImagePNGRepresentation(buttonImage) == UIImagePNGRepresentation(namedImage) 
    } 
} 

はその後

if myButton.hasImage(named: "ButtonAppuyer.png", for: .normal) { 
    print("YES") 
} else { 
    print("NO") 
} 
+0

格納された画像をチェックすることは不可能だと思った使用し、それは完璧 'Data'を比較する代わりに、あなたにたくさん – Rombond

+0

に感謝します'Data'では、ボタンに追加された画像の名前を何らかの方法でマップし、' String'と 'String'を比較したいと思います。メモリが少なくて済みます。 –

+0

@AdilSoomro、できません。あなたができることは、各画像に「タグ付け」し、各ボタンのタグプロパティを設定することです。しかし、それでも、データを比較せずにイメージが同じであることを確実にすることはできますか? – dfd

0

UI要素から画像名を取得する方法はありませんが動作しません。取得する値を別の場所に保存する必要があります。

たとえば、イメージ名やその他の識別データを格納する追加のプロパティを含むUIButtonのカスタムサブクラスを作成できます。

1

あなたはNSData sのボタンの画像と名前の画像を変換する2つのデータオブジェクトを比較することができます。例えば、同じから来た2枚の画像が完全に一致している場合にのみ動作すること

let imgData1 = UIImagePNGRepresentation(buttonImage) 
let imgData2 = UIImagePNGRepresentation(namedImage) 
let equal = imgData1 == imgData2 

は注意を(ソースファイル);一方が他方の縮小版であれば、それは機能しません。

また、これは非常に高価な操作であり、頻繁に実行しないでください。

0
if let ButtonImage = myButton.image(for: .normal), 
    let Image = UIImage(named: "ButtonAppuyer.png"), 
    UIImagePNGRepresentation(ButtonImage) == UIImagePNGRepresentation(Image) 
{ 
    print("YES") 
} else { 
    print("NO") 
} 
関連する問題