2013-10-25 11 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

स्विफ्ट में आप बराबर ऑपरेटर (==)

transform1 == transform2 
+0

पोस्ट करने से पहले आपने इसे आजमाया है? क्या आपने समेकित विस्तार जोड़ा है? : पी –

+0

@ जूलियनक्रोल हाँ आप मूल ग्राफिक्स हेडर 'सार्वजनिक func == (lhs: CGAffineTransform, rhs: CGAffineTransform) -> बूल' में डिफ़ॉल्ट रूप से घोषित कर सकते हैं। बस cmd + == ऑपरेटर पर क्लिक करें। शायद बस तेज 3? पिछले संस्करणों के साथ कोशिश नहीं की है। –

संबंधित मुद्दे