2016-12-08 20 views
6

मेरे पास एक छवि के साथ UIImageView है, यह छवि एक ठेठ नक्शा पिकर है। मैंने इसे स्टोरीबोर्ड में मानचित्र पर रखा और कुछ बाधाओं को सौंपा।जब उपयोगकर्ता MKMapView को ड्रैग करता है तो मैं UIImageView को कैसे एनिमेट कर सकता हूं?

जब उपयोगकर्ता मेरे मानचित्र के चारों ओर ड्रैग करता है, तो वह छवि अनचाहे रहती है, मैं इसे एनिमेट करने का एक तरीका ढूंढना चाहता हूं - मूल रूप से मैं इसे थोड़ा सा squish करना चाहता हूं, ऐसा लगता है कि यह खींचा गया है।

मैं पहले से ही दो विधियों है:

func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) { 

} 

और

func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 

} 

लेकिन मैं कैसे UIImageView करने के लिए परिवर्तन चेतन करने के लिए पता नहीं है।

मैं regionWillChangeAnimated के लिए निम्न कोड जोड़ने की कोशिश की:

myPositionPicker.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
     yawpPositionPicker.transform = CGAffineTransform(translationX: 0, y: 0) 
    }, completion: nil) 

(जहां myPositionPicker मेरी UIImageView है), लेकिन मैं त्रुटि

हो रही है
Static member animate cannot be used on instance of type UIImageView 

मैं सबसे अच्छा एनीमेशन लगता है मुझे होगा UIViewAnimationOptions.curveEaseIn लेकिन मुझे नहीं पता कि इसे मेरे UIImageView पर कैसे संलग्न किया जाए। क्या आप मुझे कोई इशारा दे सकते हैं?

उत्तर

1

सबसे पहले, आप उदाहरण myPositionPicker पर स्थिर विधि "चेतन" का उपयोग करने की कोशिश कर रहे हैं। और यह गलत है। बस की जगह

myPositionPicker.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
    yawpPositionPicker.transform = CGAffineTransform(translationX: 0, y: 0) 
}, completion: nil) 

के साथ:

UIView.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
    // Do whatever animations you want here. 
}, completion: nil) 

इसके बाद, आप (UIImageView स्थिति की बदलती या बदलते यह आकार की तरह) कुछ सरल एनिमेशन बनाने करना चाहते हैं - तो आप बस अपने पहले से बनाए बाधाओं इस्तेमाल कर सकते हैं और डॉन एफ़िन ट्रांसफॉर्म का उपयोग नहीं करते हैं।

उदाहरण के लिए, यदि आपकी छवि दृश्य आपके मानचित्र दृश्य के साथ लंबवत केंद्रित है। ,

@IBOutlet var pickerCenterYConsraint: NSLayoutConstraint! 

दूसरा स्टोरीबोर्ड में रोके को यह आउटलेट कनेक्ट: सबसे पहले, अपने UIViewController में इस बाधा के लिए एक विशेष @IBOutlet पैदा करते हैं।

तीसरा, जैसा कि मैंने समझा है कि आपका व्यू कंट्रोलर आपके मानचित्र दृश्य का प्रतिनिधि है। तो, मैप व्यू प्रतिनिधि प्रोटोकॉल को इस तरह कार्यान्वित करें:

func mapView(_ mapView: MKMapView, regionWillChangeAnimated animated: Bool) { 
    UIView.animate(withDuration: 1.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
     self.pickerCenterYConsraint.constant = 25.0 
     self.view.layoutIfNeeded() 
    }, completion: nil) 
} 

func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 
    UIView.animate(withDuration: 1.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { 
     self.pickerCenterYConsraint.constant = 0.0 
     self.view.layoutIfNeeded() 
    }, completion: nil) 
} 

और ... यह सब कुछ है! अब नक्शा दृश्य खींचने के दौरान आपका छवि दृश्य एनिमेटेड होगा। यदि आपको यह समाधान पसंद नहीं है - तो आप बाधाओं के आधार पर अपनी खुद की एनिमेशन बना सकते हैं। असल में आप बाधाओं के साथ बहुत सी चीजें कर सकते हैं। रोटेशन को छोड़कर, उदाहरण के लिए।

+0

क्या छवि को थोड़ा झुकाव करने का कोई तरीका है? या छवि खिंचाव/संकीर्ण? मुझे छवि को ऊपर और नीचे ले जाकर प्रभाव प्राप्त करने की आवश्यकता नहीं है, लेकिन इसे खींचना, झुकाव इत्यादि। – user3766930

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

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