[Swift] 어떤 UIColor에서 어떤 UIColor로 변화하는 도중에 지나가는 UIColor.
14970 단어 Swift
UIColor
에서 어떤 UIColor
로 변할 때 중간에 지나가는 색깔 제작 방법.나는 아래의 원본 코드로 재현했다.
DEMO
전달이 안 될까 봐 퍼레이드예요.
소스 코드
UIColorExtension.swift
import UIKit
extension UIColor {
class func colorForOffsetPercentage(percentage: CGFloat, beforeColor: UIColor, afterColor: UIColor) -> UIColor {
var beforeRGB = beforeColor.RGBForColor()
var afterRGB = afterColor.RGBForColor()
var actualRed = (afterRGB.red - beforeRGB.red) * percentage + beforeRGB.red
var actualBlue = (afterRGB.blue - beforeRGB.blue) * percentage + beforeRGB.blue
var actualGreen = (afterRGB.green - beforeRGB.green) * percentage + beforeRGB.green
var actualAlpha = (afterRGB.alpha - beforeRGB.alpha) * percentage + beforeRGB.alpha
return UIColor(red: actualRed, green: actualGreen, blue: actualBlue, alpha: actualAlpha)
}
func RGBForColor() -> (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var red: CGFloat = 0.0
var green: CGFloat = 0.0
var blue: CGFloat = 0.0
var alpha: CGFloat = 0.0
getRed(&red, green: &green, blue: &blue, alpha: &alpha)
return (red, green, blue, alpha)
}
}
percentage
에 0.0 ~ 1.0
사이의 값을 입력하면 UIColor
로 돌아갑니다.사용법
DEMO로 제작된
ViewController.swift
소스 코드입니다.ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textColorLabel: UILabel!
@IBOutlet weak var redColorLabel: UILabel!
@IBOutlet weak var greenColorLabel: UILabel!
@IBOutlet weak var blueColorLabel: UILabel!
@IBOutlet weak var slider: UISlider!
private let beforeColor: UIColor = UIColor.blueColor()
private let afterColor: UIColor = UIColor.greenColor()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
slider.minimumValue = 0
slider.maximumValue = 1
slider.value = 0
slider.addTarget(self, action: "didChangeValue:", forControlEvents: UIControlEvents.ValueChanged)
viewTextColorLabel(percentage: 0.0)
viewRGBColorLabel(percentage: 0.0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController {
func didChangeValue(sender: UISlider) {
let percentage = CGFloat(sender.value)
viewTextColorLabel(percentage: percentage)
viewRGBColorLabel(percentage: percentage)
}
private func viewTextColorLabel(#percentage: CGFloat) {
textColorLabel.textColor = UIColor.colorForOffsetPercentage(percentage, beforeColor: beforeColor, afterColor: afterColor)
}
private func viewRGBColorLabel(#percentage: CGFloat) {
let color = UIColor.colorForOffsetPercentage(percentage, beforeColor: beforeColor, afterColor: afterColor)
let colorRGB = color.RGBForColor()
redColorLabel.text = "R: \((colorRGB.red * 255.0))"
greenColorLabel.text = "G: \((colorRGB.green * 255.0))"
blueColorLabel.text = "B: \((colorRGB.blue * 255.0))"
}
}
설명
소스 코드 자체가 특별히 어려운 일을 하지 않았기 때문에 이것을 만드는 배경에서도 말씀드리고 싶습니다.
애니메이션을 통해 실제 색에서 어떤 색으로의 변화를 실현할 수 있습니다.
UIView
의 애니메이션에서 적절하게 바꾸면 색깔이 적당히 바뀐다.하지만 이번에 제가 하고 싶은 것은
UIScrollView
스크롤량에 따라 색깔을 바꾸는 것이기 때문에 이런 처리가 필요합니다.끝맺다
잘하니까 그걸 공유했어.
Reference
이 문제에 관하여([Swift] 어떤 UIColor에서 어떤 UIColor로 변화하는 도중에 지나가는 UIColor.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryokosuge/items/d6b6ce3c76a268b60a11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)