我知道这不是一个合适的方法,但为了学习,我有一个选取器控件,其中包含四个组件,每个组件中有 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()
}
}