生成不同的颜色
Generate Different Colors
我正在制作一个程序,其中有两种颜色。第一个是随机的,而第二个是与第一个不同的阴影。色调之间的差异由变量 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" 循环中 return 值,所以我需要一种方法能够 return UIColor "diff" 和仍然能够执行 "if" 语句中的操作。非常感谢! :)
不完全确定我在这里跟随你,但如果你想在完成条件语句后能够return diff
,只需在条件语句之前声明它:
let main: UIColor = [...]
let diff: UIColor
if [...] {
[...]
diff = [...]
} else {
[...]
diff = [...]
}
return diff
假设您正在使用 Swift >= 1.2 那么您可以声明一个不可变变量并在以后实际设置它,只要条件分支足够简单让编译器确保 diff
总是会在第一次使用前被初始化。
当然,虽然它在风格上不太好,但实际上您可以从 if
或 else
return 因为 main
已经初始化并且在两者中在您初始化 diff
的情况下,因此在这两种情况下您都可以安全地执行 return (main, diff)
.
我正在制作一个程序,其中有两种颜色。第一个是随机的,而第二个是与第一个不同的阴影。色调之间的差异由变量 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" 循环中 return 值,所以我需要一种方法能够 return UIColor "diff" 和仍然能够执行 "if" 语句中的操作。非常感谢! :)
不完全确定我在这里跟随你,但如果你想在完成条件语句后能够return diff
,只需在条件语句之前声明它:
let main: UIColor = [...]
let diff: UIColor
if [...] {
[...]
diff = [...]
} else {
[...]
diff = [...]
}
return diff
假设您正在使用 Swift >= 1.2 那么您可以声明一个不可变变量并在以后实际设置它,只要条件分支足够简单让编译器确保 diff
总是会在第一次使用前被初始化。
当然,虽然它在风格上不太好,但实际上您可以从 if
或 else
return 因为 main
已经初始化并且在两者中在您初始化 diff
的情况下,因此在这两种情况下您都可以安全地执行 return (main, diff)
.