2016-05-01 14 views
6

Tôi đang cố gắng thay đổi màu của các nút ứng dụng bằng cách tạo màu bằng các thanh trượt để chọn các giá trị của Đỏ, Xanh lục, Xanh lam và Alpha. Vì vậy, tôi đã tạo một biến chứa màu do người dùng tạo.CGColor không được định nghĩa cho UIColor, trước tiên cần chuyển đổi không gian màu. Swift 2, Xcode 7

Chế độ xemController là nơi các nút. ChangeColors là Hệ thống thanh trượt 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. 
} 
} 

Thứ hai là mã của hệ thống thanh trượt RGB.

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 

} 

} 

Nhưng ứng dụng bị treo ngay khi nó mở và nhận được lỗi sau:

Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInvalidArgumentException', lý do: '*** -CGColor không được định nghĩa cho UIColor; đầu tiên cần chuyển đổi không gian màu.

Tôi thực sự cần trợ giúp. Cảm ơn bạn.

+0

Thay đổi phương pháp loại tham số từ AnyObject để UISlider –

+0

Hãy chắc chắn rằng bạn đang đi qua một giá trị khác nhau, 0-1 –

+0

gì loại tài sản là buttonColor? –

Trả lời

5

Vấn đề là một cá thể được tạo bởi trình khởi tạo UIColor() không đại diện cho màu thực. Nếu bạn nhìn vào thông điệp tai nạn chi tiết hơn, bạn sẽ thấy rằng nó thực sự tạo ra một cá thể UIPlaceholderColor - cái mà (như tên gợi ý) có vẻ hoạt động như một 'trình giữ chỗ' khi không có bất kỳ thông tin màu nào. Do đó, bạn không thể chỉ định nó cho backgroundColor của bất kỳ chế độ xem nào của bạn.

Bản sửa lỗi xác định màu mặc định cho buttonColor của bạn. Trong trường hợp của bạn, tôi sẽ tư vấn cho clearColor.

var buttonColor = UIColor.clearColor() 
Các vấn đề liên quan