2016-05-01 9 views
6

मैं लाल, हरे, नीले और अल्फा के मानों का चयन करने के लिए स्लाइडर का उपयोग करके रंग बनाकर अपने ऐप के बटन को बदलने का प्रयास कर रहा था। तो मैंने एक चर बनाया जो उपयोगकर्ता द्वारा बनाए गए रंग को आयोजित करता था।CGColor UIColor के लिए परिभाषित नहीं है, पहले रंगस्थान को परिवर्तित करने की आवश्यकता है। स्विफ्ट 2, एक्सकोड 7

व्यू कंट्रोलर जहां बटन हैं। चेंजकोल्स आरजीबी स्लाइडर सिस्टम है।

import UIKit 

import Foundation 

var buttonColor = UIColor() 

class ViewController: UIViewController { 

@IBOutlet var tools: UIButton! 

@IBOutlet var custom: UIButton! 

@IBOutlet var support: UIButton! 

@IBOutlet var donate: UIButton! 



override func viewDidLoad() { 
    super.viewDidLoad() 

    tools.backgroundColor = buttonColor 
    custom.backgroundColor = buttonColor 
    support.backgroundColor = buttonColor 
    donate.backgroundColor = buttonColor 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
} 

दूसरा टी आरजीबी स्लाइडर सिस्टम का कोड है।

import Foundation 

import UIKit 

class ChangeColors: UIViewController { 

@IBOutlet var Red: UISlider! 

@IBOutlet var Green: UISlider! 

@IBOutlet var Blue: UISlider! 

@IBOutlet var Alpha: UISlider! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func preview(sender: AnyObject) { 

    let rVal = CGFloat(Red.value) 
    let gVal = CGFloat(Green.value) 
    let bVal = CGFloat(Blue.value) 
    let aVal = CGFloat(Alpha.value) 

    self.view.backgroundColor = UIColor(red: rVal, green: gVal, blue: bVal, alpha: aVal) 
} 

@IBAction func change(sender: AnyObject) { 

    let rVal = CGFloat(Red.value) 
    let gVal = CGFloat(Green.value) 
    let bVal = CGFloat(Blue.value) 
    let aVal = CGFloat(Alpha.value) 
    let color = UIColor(red: rVal, green: gVal, blue: bVal, alpha: aVal) 

    buttonColor = color 

} 

} 

लेकिन ऐप्लिकेशन क्रैश जैसे ही यह खुला और निम्न त्रुटि मिलती है:

न आया हुआ अपवाद 'NSInvalidArgumentException', कारण की वजह से एप्लिकेशन समाप्त: '*** -CGColor UIColor के लिए परिभाषित नहीं; पहले रंगस्थान को बदलने की जरूरत है।

मुझे वास्तव में मदद की ज़रूरत है। धन्यवाद।

+0

बदलें AnyObject से विधि पैरामीटर प्रकार UISlider को –

+0

वाकई 0 से 1 –

+0

buttonColor संपत्ति किस प्रकार है को लेकर एक मूल्य के गुजर रहे हैं? –

उत्तर

5

समस्या यह है कि UIColor() प्रारंभकर्ता द्वारा निर्मित एक उदाहरण वास्तविक रंग का प्रतिनिधित्व नहीं करता है। यदि आप क्रैश संदेश को अधिक विस्तार से देखते हैं, तो आप देखेंगे कि यह वास्तव में UIPlaceholderColor उदाहरण बनाता है - जो (जैसा कि नाम सुझाता है) किसी भी रंग की जानकारी की अनुपस्थिति में 'प्लेसहोल्डर' के रूप में कार्य करता प्रतीत होता है। इसलिए आप इसे अपने किसी भी विचार के backgroundColor पर असाइन नहीं कर सकते हैं।

फ़िक्स आपके buttonColor के लिए डिफ़ॉल्ट रंग परिभाषित करता है। आपके मामले में मैं clearColor सलाह दूंगा।

var buttonColor = UIColor.clearColor() 
संबंधित मुद्दे