2015-12-21 6 views
7

पर "स्थान" कैसे दें I मैंने CAGradientLayer को तीन रंग बनाए हैं, मुझे प्रत्येक रंग को अलग-अलग स्थानों को देने की आवश्यकता है। उदाहरण:CAGradientLayer

Red = 0 to 50 % 
Yellow = 51 to 80 % 
Green = 81 to 100 % 

मैं startPoint और endPoint देने के साथ की कोशिश की है, लेकिन यह काम नहीं किया। enter image description here

+0

जहां आप वास्तव में संघर्ष कर रहे हैं? परत में दो गुण 'रंग' और' स्थान 'हैं जो आपके लिए उपयोग किए जाने चाहिए। क्या भाषा बीटीडब्ल्यू? – luk2302

+0

आपका "उदाहरण" स्पष्ट नहीं है, समझाएं कि वास्तव में 0% -50%, 51% -80% और 81% -100% का मतलब क्या है और आपके द्वारा उपयोग किया गया कोड जोड़ें ताकि कोई आपको समस्या दिखा सके, अन्यथा हम सब कुछ कर सकते हैं दस्तावेज उद्धरण है। –

+0

ढाल परत पर रंग ऐसा और ऐसा प्रतिशत होना चाहिए, डिफ़ॉल्ट रूप से सभी तीन रंग समान रूप से वितरित करेंगे जो मैं बदलना चाहता हूं। मैं उद्देश्य-सी का उपयोग कर रहा हूँ। धन्यवाद। –

उत्तर

16

आप एक खेल का मैदान में निम्न कोड डालें, तो आप करेंगे सटीक वांछित आउटपुट मिलता है:

let view = UIView(frame: CGRectMake(0,0,200,100)) 

let layer = CAGradientLayer() 
layer.frame = view.frame 
layer.colors = [UIColor.greenColor().CGColor, UIColor.yellowColor().CGColor, UIColor.redColor().CGColor] 
layer.locations = [0.0, 0.8, 1.0] 

view.layer.addSublayer(layer) 

XCPShowView("ident", view: view) 

outputting:

enter image description here

आप बस CGColors की एक सरणी के रूप में रंग को परिभाषित , और 0.012 1.0 के बीच NSNumber के समान आकार की एक सरणी।

न कि के लिए startPoint और endPoint का उपयोग करें - वे कहाँ करने के लिए जहां ढाल परत में दिखाया गया है से परिभाषित करने के लिए कर रहे हैं - यह percents से कोई लेना देना और रंग आदि


नहीं है कोड का हालिया स्विफ्ट 3 संस्करण:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100)) 
let layer = CAGradientLayer() 
layer.frame = view.frame 
layer.colors = [UIColor.green.cgColor, UIColor.yellow.cgColor, UIColor.red.cgColor] 
layer.locations = [0.0, 0.8, 1.0] 
view.layer.addSublayer(layer) 
PlaygroundPage.current.liveView = view 
+0

धन्यवाद, यह मेरी समस्या हल हो गया। –

+1

@luk क्या होगा यदि मैं स्थानों सरणी का उपयोग कर क्षैतिज ढाल चाहता हूं? – abhi1992

+1

replay @ luk2302 के लिए धन्यवाद, हम क्षैतिज ढाल बनाने के लिए स्टार्टपॉइंट, एंडपॉइंट और स्थानों का एक साथ उपयोग कर सकते हैं। – abhi1992

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