2016-12-11 4 views
0

UIImageの幅と高さを比較する必要がありました。幅が高さより大きい場合、境界を追加します。以下はココアタッチクラスの私のコードスイフト3 - UIImageの幅と高さを比較するには?

override func viewDidLoad() { 

    let x = p2Image.image?.size.width 
    let y = p2Image.image?.size.height 


    if x > y{ 
     p2Border.backgroundColor = UIColor.black 


    }else{ 

     p2Border.backgroundColor = UIColor.clear 

    } 
} 

それは、プロンプトエラーバイナリ演算子である> 2 CGFloatsオペランドに適用することはできません、私を助けてください..

答えて

2

あなたxyは連鎖によるオプションのにoptionalsですので、それらをアンラップする必要があります。を結合オプションは、それを行うための安全な方法です:

override func viewDidLoad() { 

    if let x = p2Image.image?.size.width, 
     let y = p2Image.image?.size.height { 

     if x > y { 
      p2Border.backgroundColor = .black     
     } else {     
      p2Border.backgroundColor = .clear     
     } 
    } 
} 

p2Image.imagenilある場合、これは安全に何もしません。


nilときp2Image.imageあなたは、あなたがこのようなx > y比較してオプションの結合を組み合わせることができ、.clearを割り当てる場合 :

override func viewDidLoad() { 

    if let x = p2Image.image?.size.width, 
     let y = p2Image.image?.size.height, 
     x > y { 

     p2Border.backgroundColor = .black 
    } else { 
     p2Border.backgroundColor = .clear 
    } 
} 
+0

そここんにちは、返信に感謝!あなたのメソッドにエラーはありませんが、うまくいきません。 –

+0

'p2Image.image'は' nil'のようです。それはどのように設定されていますか?あなたの質問を更新し、 'p2Image.image'がどのように設定されているかを示してください。 – vacawama

+0

いいえ、そうではありません。** UserDefaults.standard.set(imageData、forKey: "keyImage")**で画像を保存しました。その後、私はアプリを起動するたびに、私は**データ= UserDefaults.standard.object(forKey: "keyImage")を使用して! NSData **、** myImage.image = UIImage(データ:データのデータ)** –

関連する問題