iOS APP/SWIFT #7 Color change practices :
Published in
2 min readMar 30, 2023
Used objects
1. IBOutlet & IBAction
2. Slider, Label, ImageView
3. Navigation controlle
4. CAGradientLayer
- Storyboard
- APP video
- Initial SWIFT code
import UIKit
class ColorChangeViewController: UIViewController {
@IBOutlet weak var redColor: UISlider!
@IBOutlet weak var greenColor: UISlider!
@IBOutlet weak var blueColor: UISlider!
@IBOutlet weak var alphaColor: UISlider!
@IBOutlet weak var redLabel: UILabel!
@IBOutlet weak var greenLabel: UILabel!
@IBOutlet weak var blueLabel: UILabel!
@IBOutlet weak var alphaLable: UILabel!
@IBOutlet weak var colorImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
redColor.value = Float(CGFloat(0))
greenColor.value = Float(CGFloat(0))
blueColor.value = Float(CGFloat(0))
alphaColor.value = Float(0.5)
redLabel.text = String(Int(redColor.value*255))
greenLabel.text = String(Int(greenColor.value*255))
blueLabel.text = String(Int(blueColor.value*255))
alphaLable.text = String (format: "%.2f", alphaColor.value)
// Do any additional setup after loading the view.
}
func reflashValue () {
colorImageView.backgroundColor = UIColor(red: CGFloat(redColor.value), green: CGFloat(greenColor.value), blue: CGFloat(blueColor.value), alpha: CGFloat(alphaColor.value))
redLabel.text = String(Int(redColor.value*255))
greenLabel.text = String(Int(greenColor.value*255))
blueLabel.text = String(Int(blueColor.value*255))
alphaLable.text = String (format: "%.2f", alphaColor.value)
}
@IBAction func changeColor(_ sender: Any) {
reflashValue()
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
- After ChatGPT suggestion
import UIKit
class ColorChangeViewController: UIViewController {
@IBOutlet weak var redColor: UISlider!
@IBOutlet weak var greenColor: UISlider!
@IBOutlet weak var blueColor: UISlider!
@IBOutlet weak var alphaColor: UISlider!
@IBOutlet weak var redLabel: UILabel!
@IBOutlet weak var greenLabel: UILabel!
@IBOutlet weak var blueLabel: UILabel!
@IBOutlet weak var alphaLable: UILabel!
@IBOutlet weak var colorImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
redColor.value = 0
greenColor.value = 0
blueColor.value = 0
alphaColor.value = 0.5
updateColor()
// Do any additional setup after loading the view.
}
func updateColor () {
let red = CGFloat(redColor.value)
let green = CGFloat(greenColor.value)
let blue = CGFloat(blueColor.value)
let alpha = CGFloat(alphaColor.value)
colorImageView.backgroundColor = UIColor(red: red, green: green, blue: blue, alpha: alpha)
redLabel.text = String(Int(redColor.value*255))
greenLabel.text = String(Int(greenColor.value*255))
blueLabel.text = String(Int(blueColor.value*255))
alphaLable.text = String (format: "%.2f", alphaColor.value)
}
@IBAction func changeColor(_ sender: Any) {
updateColor()
}
}
Summary :
1. Copy and past View Controller should check the “Connection Inspector”. The APP will crash if the connection had error
2. Using CAGradientLayer to change color should set the Alpha value to 1.