/ / CATransform3D UIScrollView ज़ूम (3 डी) पर परिप्रेक्ष्य परिवर्तन - आईओएस, यूक्रोलाव्यू, रोटेशन, ज़ूम, कैट्रांसफॉर्म 3 डी

CATransform3D UIScrollView ज़ूम (3 डी) पर परिप्रेक्ष्य परिवर्तन - आईओएस, uiscrollview, रोटेशन, ज़ूम, catransform3d

मैं एक परिप्रेक्ष्य लागू करने का प्रयास कर रहा हूंजोड़े गए अवरोध के साथ Apple मैप्स 3D प्रभाव के समान प्रभाव को प्राप्त करने के लिए रूपान्तरण को लागू किया जाता है, ताकि सुविधा को सक्षम करने के लिए एक बटन को क्लिक करने के बजाय एक निश्चित ज़ूम स्केल पर पहुंचा दिया जाए।

इसे प्राप्त करने के लिए मैं बहुत ही कम परिणाम के साथ निम्न कार्य कर रहा हूं।

- (void)scrollViewDidEndZooming:(UIScrollView *)scr withView:(UIView *)view atScale:(CGFloat)scale {
NSLog(@"Scale: %f", scale);

CATransform3D transform = CATransform3DIdentity;
//z distance
float distance = [[UIScreen mainScreen] bounds].size.height;

transform.m34 = - 1.0/distance;

transform = CATransform3DRotate(transform, scale * 15 * M_PI / 180.0f, 1.f, 0.0f, 0.0f);

[UIView animateWithDuration:0.3 animations:^{

image.layer.transform = transform;
image.layer.zPosition = distance * ratio;
image.layer.position = CGPointMake([[UIScreen mainScreen] bounds].size.width/2, [[UIScreen mainScreen] bounds].size.height/3);
}];

previousScale = scale;
}

अंत क्या हो रहा है कि परिप्रेक्ष्यपरिवर्तन पहली बार लागू किया गया है। हालांकि, यह इमेजव्यू का भी अनुवाद करता है, जो कि मैं नहीं चाहता। इसके अलावा, बाद में ज़ूम के प्रयास आधार के रूप में पिछले घुमाव का उपयोग करके घूमते हुए प्रतीत होंगे (मैंने सोचा था कि पहचान परिवर्तन में परिवर्तन सेट करने से यह व्यवहार रीसेट हो जाएगा)।

इसके अलावा, रोटेशन प्रभाव को प्राप्त करने की दिशा में किसी भी संकेत की बहुत सराहना की जाएगी।

बस, मेरा प्रश्न इस प्रकार है: मैं Apple मानचित्र 3D प्रभाव के समान रूपान्तरण प्रभाव को प्राप्त करने के लिए m34 परिवर्तन का ठीक से उपयोग कैसे करूँ।

बोनस प्रश्न: क्या आप रोटेशन प्रभाव प्राप्त करने के लिए मुझे सही दिशा में इंगित कर सकते हैं।

धन्यवाद!

उत्तर:

उत्तर № 1 के लिए 1

रूट दृश्य में m34 मान को बदलते हुए एक प्रकार का परिप्रेक्ष्य प्राप्त करने के लिए पर्याप्त नहीं है। विषय काफी जटिल है और इसे वास्तव में एक विशेष होस्टिंग परत की आवश्यकता है CATransformLayer.
यहाँ मुझे "a मिला ब्लॉग लेख वह आपकी मदद कर सकता है। लेयर लैंग्वेज में रोटेशन एंकर पॉइंट में लगाया जाता है।