जैसा कि बेन ने कहा, आपको प्रदर्शन करने के लिए UIView's
ए CATransform3D
का उपयोग करके, परत के साथ काम करने की आवश्यकता होगी layer's
rotation
। यहाँ वर्णित के रूप में कार्य करने के लिए परिप्रेक्ष्य प्राप्त करने की चाल, (m34) के मैट्रिक्स में cells
से एक को सीधे एक्सेस करना है CATransform3D
। मैट्रिक्स गणित कभी मेरी चीज नहीं रही है, इसलिए मैं यह नहीं समझा सकता कि यह क्यों काम करता है, लेकिन यह करता है। आपको अपने प्रारंभिक परिवर्तनों के लिए इस मान को एक नकारात्मक अंश पर सेट करना होगा, फिर अपनी परत के घुमाव को उस पर लागू करें। आपको निम्नलिखित कार्य करने में भी सक्षम होना चाहिए:
उद्देश्य सी
UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
स्विफ्ट 5.0
if let myView = self.subviews.first {
let layer = myView.layer
var rotationAndPerspectiveTransform = CATransform3DIdentity
rotationAndPerspectiveTransform.m34 = 1.0 / -500
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0 * .pi / 180.0, 0.0, 1.0, 0.0)
layer.transform = rotationAndPerspectiveTransform
}
जो प्रत्येक घुमाव के लिए खरोंच से परत रूपांतरित करता है।
इसका एक पूर्ण उदाहरण (कोड के साथ) यहां पाया जा सकता है , जहां मैंने CALayers
बिल ड्यूडीनी के एक उदाहरण के आधार पर एक जोड़े पर स्पर्श-आधारित रोटेशन और स्केलिंग लागू की है। कार्यक्रम का सबसे नया संस्करण, पृष्ठ के बहुत नीचे, इस तरह के परिप्रेक्ष्य संचालन को लागू करता है। कोड को पढ़ने के लिए यथोचित सरल होना चाहिए।
sublayerTransform
आप अपनी प्रतिक्रिया में उल्लेख करने के लिए एक को बदलने कि आपके के sublayers को लागू किया जाता है UIView's
CALayer
। यदि आपके पास कोई सबलेयर नहीं है, तो इसके बारे में चिंता न करें। मैं अपने उदाहरण में sublayerTransform का उपयोग केवल इसलिए करता हूं क्योंकि CALayers
एक परत के भीतर दो निहित हैं जो मैं घुमा रहा हूं।