जब आप की तरह कुछ होगा: आप वास्तव में बस
textView.layer
क्या आप तो कर सकते हैं कतरन के लिए एक मुखौटा सेट किया गया है करने के लिए के साथ मुख्य एनीमेशन से TextView की परत का उपयोग कर सकते
+(UITextView *)textView:(UITextView *)textView withCuttedRect:(CGRect)r {
}
। ये मास्क निम्न तरीके से काम करते हैं: आप आम तौर पर एक काला आकार खींचते हैं, और यह वही रहता है, बाकी को फिसल जाएगा (ठीक है, आप वास्तव में अल्फा चैनल पर कुछ चीजें भी कर सकते हैं लेकिन मोटे तौर पर यह है)।
तो आपको आयत के रूप में एक आयत के रूप में एक काले आयताकार की आवश्यकता है, जो कि आयताकार के भीतर एक आयताकार है। उसके लिए आपको लगभग
CAShapeLayer *mask = [[CAShapeLayer alloc] init];
mask.frame = self.textView.layer.bounds;
CGRect biggerRect = CGRectMake(mask.frame.origin.x, mask.frame.origin.y, mask.frame.size.width, mask.frame.size.height);
CGRect smallerRect = CGRectMake(50.0f, 50.0f, 10.0f, 10.0f);
UIBezierPath *maskPath = [UIBezierPath bezierPath];
[maskPath moveToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMaxY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMaxY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMinY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))];
[maskPath moveToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMaxY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMaxY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMinY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))];
mask.path = maskPath.CGPath;
[mask setFillRule:kCAFillRuleEvenOdd];
mask.fillColor = [[UIColor blackColor] CGColor];
self.textView.layer.mask = mask;
कर सकते हैं कोड ऊपर भी Crop a CAShapeLayer retrieving the external path
विचार क्यों कि भरने से काम करता है कि जिस तरह से अच्छी तरह से खंड में Quartz 2D Programming Guide से समझाया गया है
स्रोत
2012-06-20 07:35:30
शायद "एक पथ भरने" द्वारा disused है मुझे क्वार्ट्जकोर और इसका 'सेटबैकग्राउंड' फ़िल्टर विधि का उपयोग करना चाहिए? – user1385666