2016-05-01 3 views
6

Я пытался изменить цвет кнопок моего приложения, создав цвет с помощью ползунков, чтобы выбрать значения красного, зеленого, синего и альфа-диапазона. Поэтому я создал переменную, содержащую цвет, созданный пользователем.CGColor, не определенный для UIColor, необходимо сначала преобразовать цветовое пространство. Swift 2, Xcode 7

ViewController - это кнопки для кнопок. ChangeColors - это система слайдеров RGB.

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. 
} 
} 

Второй код - код RGB Slider System.

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() 
Смежные вопросы