2011-04-04 55 views
6

मैं एक 200x200 pixelCALayer उदाहरण है, जिसमें मैं दो परिवर्तनों द्वारा लागू किए गए करने के लिए है एक और परत ऐसा करने के लिए मुझे रूपांतरित परत के आकार (चौड़ाई और ऊंचाई) की आवश्यकता है।परिवर्तित कैलियर के वास्तविक आकार को कैसे प्राप्त करें?</li> <li>लागू किया एक 3 डी परिप्रेक्ष्य</li> </ul> <p>अब मैं के साथ बदल परत संरेखित करना चाहते हैं</p> <ul> <li>50% तक कम किया:

समस्या यह है कि layer.bounds परत के लिए 200x200 लौटाता है, लेकिन परिप्रेक्ष्य परिवर्तन की वजह से वास्तविक दृश्य चौड़ाई कम है और ऊंचाई 200 से अधिक है। प्रस्तुति परत की सीमाएं 0, वैसे भी लौटती हैं।

क्या कोई तरीका है कि मैं स्क्रीन पर खींचे गए रूपांतरित रूप से CALayer के सटीक आकार को कैसे निर्धारित कर सकता हूं?

धन्यवाद, मार्क।

उत्तर

11

अंत में यह पता लगाया गया: bounds परिवर्तन लागू करते समय अपरिवर्तित रहता है, लेकिन परत frame संपत्ति में क्या परिवर्तन होता है।

समाधान layer.bounds.size के बजाय उपयोग करना है।

यह कोर एनिमेशन प्रोग्रामिंग गाइड में बताया गया है:

परतें एक अंतर्निहित फ्रेम स्थिति, सीमा, anchorPoint की एक समारोह है कि है, और गुण को बदलने।