UIColor 初始值设定项(找不到接受 'UIColor' 类型的初始值设定项)错误



我知道这不是一个合适的方法,但为了学习,我有一个选取器控件,其中包含四个组件,每个组件中有 255 行,用于根据 RGB-alpha 更改"视图"背景颜色。我知道UIColor(red: <#CGFloat#>, green: <#CGFloat#>, blue: <#CGFloat#>, alpha: <#CGFloat#>)接受四个浮点数作为每种颜色的参数,但我收到错误:
找不到接受类型为"(红色:浮点型,绿色:浮点型,蓝色:浮点型,alpha:浮点型)
"的参数列表的初始值设定项怎么了?

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    var newbackgroundColor = UIColor()
    var redCode: Float = 0.0
    var greenCode: Float = 0.0
    var blueCode: Float = 0.0
    var alphaCode: Float = 0.0
    if component == 0 {
        switch row {
        case 0..<256:
            redCode = Float(row/255)
            newbackgroundColor = UIColor(red: redCode, green: greenCode, blue: blueCode, alpha: alphaCode)
        default:
            break
        }
    } else if component == 1 {
        switch row {
        case 0..<256:
            greenCode = Float(row/255)
            newbackgroundColor = UIColor(red: redCode, green: greenCode, blue: blueCode, alpha: alphaCode)
        default:
            break
        }
    } else if component == 2{
        switch row {
        case 0..<256:
            blueCode = Float(row/255)
            newbackgroundColor = UIColor(red: redCode, green: greenCode, blue: blueCode, alpha: alphaCode)
        default:
            break
        }
    } else {
        switch row {
        case 0..<256:
            alphaCode = Float(row/255)
            newbackgroundColor = UIColor(red: redCode, green: greenCode, blue: blueCode, alpha: alphaCode)
        default:
            break
        }
    }
    self.view.backgroundColor = newbackgroundColor
}

使用CGFloat而不是Float

收到此类错误时检查 API 文档

除了 Float 与 CGFloat 不同之外,您还可以像这样简化它:

class ViewController: UIViewController,UIPickerViewDelegate {
    @IBOutlet var pickerView: UIPickerView!
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 4
    }
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return 256
    }
    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        view.backgroundColor = UIColor(red: CGFloat(pickerView.selectedRowInComponent(0))/255, green: CGFloat(pickerView.selectedRowInComponent(1))/255, blue: CGFloat(pickerView.selectedRowInComponent(2))/255, alpha: CGFloat(pickerView.selectedRowInComponent(3))/255)
    }
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return "(row)"
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView.delegate = self
        pickerView.backgroundColor = UIColor.whiteColor()
    }
    override func viewDidAppear(animated: Bool) {
        pickerView.selectRow(255, inComponent: 0, animated: false)
        pickerView.selectRow(0, inComponent: 1, animated: false)
        pickerView.selectRow(0, inComponent: 2, animated: false)
        pickerView.selectRow(255, inComponent: 3, animated: false)
        view.backgroundColor = UIColor(red: CGFloat(pickerView.selectedRowInComponent(0))/255, green: CGFloat(pickerView.selectedRowInComponent(1))/255, blue: CGFloat(pickerView.selectedRowInComponent(2))/255, alpha: CGFloat(pickerView.selectedRowInComponent(3))/255)
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

最新更新