我正在制作一个有两种颜色的程序。第一个是随机的,而第二个是第一个不同的阴影。阴影之间的差异由变量colorDiff确定。
func generateColors() -> (main: UIColor, diff: UIColor) {
let colorDiff = findColorDiff()
let redMain: CGFloat = CGFloat(arc4random_uniform(255))/255.0
let greenMain: CGFloat = CGFloat(arc4random_uniform(255))/255.0
let blueMain: CGFloat = CGFloat(arc4random_uniform(255))/255.0
let main: UIColor = UIColor(red: redMain, green: greenMain, blue: blueMain, alpha: 0.8)
if (redMain + colorDiff <= 255 && blueMain + colorDiff <= 255 && greenMain + colorDiff <= 255) {
let redDiff: CGFloat = redMain + colorDiff
let blueDiff: CGFloat = blueMain + colorDiff
let greenDiff: CGFloat = greenMain + colorDiff
let diff: UIColor = UIColor(red: redDiff, green: greenDiff, blue: blueDiff, alpha: 0.8)
return diff
} else {
let redDiff: CGFloat = redMain - colorDiff
let blueDiff: CGFloat = blueMain - colorDiff
let greenDiff: CGFloat = greenMain - colorDiff
let diff: UIColor = UIColor(red: redDiff, green: greenDiff, blue: blueDiff, alpha: 0.8)
return diff
}
return (main, diff)
}
主要问题是我无法从“if”循环中返回值,所以我需要一种方法能够返回UIColor“diff”,并且仍然可以在“if”语句中执行操作。非常感谢提前! :)
答案 0 :(得分:0)
我不完全确定我在这里关注你,但如果你希望能够在完成条件语句后返回diff
,只需在条件语句之前声明它:
let main: UIColor = [...]
let diff: UIColor
if [...] {
[...]
diff = [...]
} else {
[...]
diff = [...]
}
return diff
假设您正在使用Swift&gt; = 1.2,那么您可以声明一个不可变变量并实际设置它,只要条件分支足够简单,编译器就能确保diff
始终是在第一次使用之前初始化。
当然,虽然风格不太好,但您实际上可以从if
或else
返回,因为main
已经初始化,在这两种情况下,您都在初始化{{ 1}},所以两者都可以安全地diff
。