Swift를 사용하여 무작위 색상 기능을 어떻게 만들 수 있습니까?
import UIKit
class ViewController: UIViewController {
var randomNumber = arc4random_uniform(20)
var randomColor = arc4random()
//Color Background randomly
func colorBackground() {
// TODO: set a random color
view.backgroundColor = UIColor.yellow
}
}
답변
CGFloat
0에서 1 사이의 임의 의 s 를 생성하는 함수가 필요합니다 .
extension CGFloat {
static func random() -> CGFloat {
return CGFloat(arc4random()) / CGFloat(UInt32.max)
}
}
그런 다음 이것을 사용하여 임의의 색상을 만들 수 있습니다.
extension UIColor {
static func random() -> UIColor {
return UIColor(
red: .random(),
green: .random(),
blue: .random(),
alpha: 1.0
)
}
}
임의의 알파를 원하면 다른 난수도 만드십시오.
이제 다음과 같이 뷰의 배경색을 지정할 수 있습니다.
self.view.backgroundColor = .random()
답변
Swift 4.2의 경우
extension UIColor {
static var random: UIColor {
return UIColor(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1.0)
}
}
Swift 3 이상 :
extension CGFloat {
static var random: CGFloat {
return CGFloat(arc4random()) / CGFloat(UInt32.max)
}
}
extension UIColor {
static var random: UIColor {
return UIColor(red: .random, green: .random, blue: .random, alpha: 1.0)
}
}
용법:
let myColor: UIColor = .random
답변
임의의 색상을 생성하는 함수를 만듭니다.
func getRandomColor() -> UIColor {
//Generate between 0 to 1
let red:CGFloat = CGFloat(drand48())
let green:CGFloat = CGFloat(drand48())
let blue:CGFloat = CGFloat(drand48())
return UIColor(red:red, green: green, blue: blue, alpha: 1.0)
}
이제 임의의 색상이 필요할 때마다이 함수를 호출 할 수 있습니다.
self.view.backgroundColor = getRandomColor()
답변
임의의 단색의 경우 UIColor HSB 이니셜 라이저를 사용하고 색조 만 임의화할 수 있습니다.
extension UIColor {
static var random: UIColor {
return .init(hue: .random(in: 0...1), saturation: 1, brightness: 1, alpha: 1)
}
}
let color1: UIColor = .random
let color2: UIColor = .random
let color3: UIColor = .random
let color4: UIColor = .random
let color5: UIColor = .random
답변
함께 스위프트 4.2 , 당신은 추가 된 새로운 임의의 기능을 사용하여이 작업을 단순화 할 수 있습니다 :
extension UIColor {
static func random () -> UIColor {
return UIColor(
red: CGFloat.random(in: 0...1),
green: CGFloat.random(in: 0...1),
blue: CGFloat.random(in: 0...1),
alpha: 1.0)
}
}
여기에 자세한 내용이 있습니다 .
답변
스위프트 4.2 ?
이 답변은 다른 접근 방식을 사용하기 때문에 추가하고 있으며 이전 답변의 대부분은 추가 구문 설탕이 필요하기 때문에 내 의견으로는 선호해서는 안됩니다. 승리를위한 바닐라 스위프트.
extension UIColor {
/**
* Returns random color
* ## Examples:
* self.backgroundColor = UIColor.random
*/
static var random: UIColor {
let r:CGFloat = .random(in: 0...1)
let g:CGFloat = .random(in: 0...1)
let b:CGFloat = .random(in: 0...1)
return UIColor(red: r, green: g, blue: b, alpha: 1)
}
}
답변
SwiftUI-Swift 5
import SwiftUI
extension Color {
static var random: Color {
return Color(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1))
}
}
용법:
let randomColor: Color = .random