2013-10-25 3 views
13

このコードを完成させる方法エラーが発生しています。CGAffinetransformを比較するには?

-(IBAction)dropDownBtn:(id)sender { 

dropDownBtn.transform = CGAffineTransformMakeRotation(720*M_PI/360); 

if ([dropDownBtn.transform CGAffineTransformMakeRotation(720*M_PI/360)) { 

    dropDownBtn.transform = CGAffineTransformMakeRotation(520*M_PI/360); 
    } 
} 

答えて

27

変換を比較する機能があります:

CGAffineTransformEqualToTransform(transform1, transform2) 
1

あなたが与えられた精度(ユニットテストで有用)との等価性のテストが必要な場合は、私はこの関数を使用します。

BOOL CGAffineTransformEqualToTransformWithAccuracy (CGAffineTransform firstTransform, CGAffineTransform secondTransform, CGFloat epsilon) { 
    return (fabs(firstTransform.a - secondTransform.a) <= epsilon) && 
      (fabs(firstTransform.b - secondTransform.b) <= epsilon) && 
      (fabs(firstTransform.c - secondTransform.c) <= epsilon) && 
      (fabs(firstTransform.d - secondTransform.d) <= epsilon) && 
      (fabs(firstTransform.tx - secondTransform.tx) <= epsilon) && 
      (fabs(firstTransform.ty - secondTransform.ty) <= epsilon); 
} 
0

はここです内線番号:

import CoreGraphics 

extension CGAffineTransform: Equatable {} 

public func ==(lhs: CGAffineTransform, rhs: CGAffineTransform) -> Bool { 
    return CGAffineTransformEqualToTransform(lhs, rhs) 
} 
1

Swiftでは、等価演算子(==)を使用します。

transform1 == transform2 
+0

投稿する前に試しましたか? Equatable拡張を追加しましたか? :P –

+0

@JulianKrólはい、これはデフォルトでコアグラフィックスのヘッダー 'public func ==(lhs:CGAffineTransform、rhs:CGAffineTransform) - > Bool'で宣言されています。 cmd = +演算子をクリックするだけです。たぶんちょっと速い3?それ以前のバージョンでは試していない。 –