6

मैं बुनियादी परिवर्तनों (रोटेशन, स्केल इत्यादि) का उपयोग करके कुछ समय के लिए आईफोन ऐप्स बना रहा हूं, लेकिन अब मैं कुछ और जटिल करना चाहता हूं।एक विशिष्ट प्रकार के परिप्रेक्ष्य को जोड़ने के लिए मैं UIView पर CATransform3D का उपयोग कैसे करूं?

गणित वास्तव में मेरा सबसे मजबूत बिंदु नहीं है ... लेकिन मैं सोच रहा था कि मैं UIView में 'परिप्रेक्ष्य' जोड़ने के बारे में कैसे जा सकता हूं (नीचे दी गई छवि देखें)। मैं जल्दी से मज़ाक उड़ाया स्क्रीनशॉट अप में फ़ोटोशॉप तिरछा विकल्पों का उपयोग कर .

मैं इस के समाधान के लिए stackoverflow चारों ओर एक नज़र पड़ा है, मैं How do I apply a perspective transform to a UIView? जो उत्कृष्ट काम करता पाया - लेकिन यह वास्तव में मैं क्या कर रहा हूँ नहीं है क्योंकि के बाद छोड़ दिया की ऊंचाई सबसे बढ़त दाएं किनारे से बड़ा है .

क्या कोई जानता है कि मैं इस कैटरन्सफॉर्म 3 डी करने के बारे में कैसे जा सकता हूं लेकिन इन अलग-अलग ऊंचाइयों के बिना?

alt text http://img594.imageshack.us/img594/4354/perspectivel.png

उत्तर

11

तुम सिर्फ तिरछा करना चाहते हैं, तो आप 3 डी को बदलने की जरूरत नहीं है। एक affine परिवर्तन पर्याप्त होगा।

-(void)drawRect:(CGRect)rect { 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGAffineTransform transform = CGAffineTransformIdentity; 
    transform.b = -0.1; 
    transform.a = 0.9; 
    CGContextConcatCTM(ctx,transform); 
    // do drawing on the context 
} 

यह एक परियोजना है जो एक समान बदलने से एक संशोधित प्रतिलिपि & पेस्ट है, लेकिन आप के लिए धुन मापदंडों ए और बी पड़ सकता है। यह बाएं से दाएं (0.1/0.9) में 9 में से 1 वृद्धि देगा, जबकि बाएं से दाएं से 90% () पर घनत्व होगा।

+0

शानदार उत्तर, बहुत बहुत धन्यवाद! –

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