पर एक ढाल के साथ पथ भरना CAShapeLayer
पर, मैंने एक बंद UIBezierPath
खींचा है। मैं fillColor
सेट करके इस आकृति को भर सकता हूं, हालांकि मैं आकार को ढाल के साथ भरना चाहता हूं। मैं CAGradientLayer
कैसे सेट अप कर सकता हूं ताकि यह बेजियर पथ द्वारा उल्लिखित आकार पर क्लिप हो?आईओएस
Q
आईओएस
8
A
उत्तर
5
आप जो चाहते हैं वह मुखौटा है।
[gradientLayer setMask:shapeLayer];
19
एक ड्राफ्ट उदाहरण का पालन करना होगा:: CAGradientlayer एक -setMask विधि कि इतने की तरह अपने आकार की सीमा के लिए यह क्लिप कर सकते हैं
...
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *gradientColor = [UIColor colorWithRed:0.51 green:0.0 blue:0.49 alpha:1.0];
NSArray *gradientColors = [NSArray arrayWithObjects:
(id)[UIColor blueColor].CGColor,
(id)gradientColor.CGColor,
(id)[UIColor redColor].CGColor, nil];
CGFloat gradientLocations[] = {0, 0.5, 1};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)gradientColors, gradientLocations);
UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 200, 200) cornerRadius:6];
CGContextSaveGState(context);
[roundedRectanglePath fill];
[roundedRectanglePath addClip];
CGContextDrawLinearGradient(context, gradient, CGPointMake(10, 10), CGPointMake(210, 10), 0);
CGColorSpaceRelease(colorSpace);
CGGradientRelease(gradient);
...
यह अच्छा है, लेकिन आप भी ऐसा करना चाहिए ढाल और रंग अंतरिक्ष जारी करें। – Sulthan
धन्यवाद, मैं उन्हें – WhiteTiger
डाल करने के बाद से मूल पोस्ट एक मुखौटा विशेष रुप से भूल गया, मैं यह भी कहा निम्नलिखित: 'CGContextAddPath (संदर्भ, roundedRectanglePath.CGPath);' ' CGContextClip (संदर्भ);' 'CGContextDrawLinearGradient' से पहले – maggix