[Swift] 光の三原色(RGB)の割合を用いてUIColor に独自の色を追加する
- 何故16進数でやらないのか?
元々、私自身 こちらの記事でUiColor の拡張をしようとしてみたのですが、今のSwiftにはUIColorにrgbColorの拡張子がないみたいです。 また、16進数よりも中学生くらいの時に習った光の三原色を使用したほうが皆さんにわかりやすいかなと思いました!
準備
UIColor に独自の色を付け加えていくので、色を反映するのとは別にextension File をお作りください。
サンプルコード(etension側)
Etension.swift
import UIKit
extension UIColor{
// オリジナルのカラーを生成します。割合については下の方の参考の部分でURLを載せておきます!
//オレンジ
class func OrangeColor()->UIColor{
let Black = UIColor.init(red: 1.0, green: 0.6, blue: 0, alpha: 1.0)
return Black
}
//ミドリ
class func GreenColor()->UIColor{
let Black = UIColor.init(red: 0.0, green: 1.0, blue: 0.6, alpha: 1.0)
return Black
}
//ピンク
class func PinkColor()->UIColor{
let Black = UIColor.init(red: 1.0, green: 0.6, blue: 1.0, alpha: 1.0)
return Black
}
}
サンプルコード(使用側)
ViewController
//雑で申し訳ないですが簡単に使い方だけ
//extension で拡張したclass が使用できるようになります!
//万一出なかった場合は下の方を試してみてください!
UILabel.textColor = UIColor.PurpleColor()
もし上手くいかなかった場合。
理由はよくわかりませんですが、私もたまにUIColor にうまく拡張できていない場合がありました。
そうい言うときは下記のようにワンクッション置くとうまく行ったのでお試しください
Extension
import UIKit
class ColorComPonent:UIColor{
//ワンクッションの作業
}
// ワンクッション置いたためUIColor ではなく ColorComPonent の拡張子を広げてあげる
extension ColorComPonent{
// オリジナル
class func OrangeColor()->UIColor{
let Black = UIColor.init(red: 1.0, green: 0.6, blue: 0, alpha: 1.0)
return Black
}
class func GreenColor()->UIColor{
let Black = UIColor.init(red: 0.0, green: 1.0, blue: 0.6, alpha: 1.0)
return Black
}
class func PinkColor()->UIColor{
let Black = UIColor.init(red: 1.0, green: 0.6, blue: 1.0, alpha: 1.0)
return Black
}
}
** この場合だと使用する側のコードも変わります**
ViewController
//UIColor ではなく ColorComPonent を使う
UILabel.textColor = ColorComPonent.GreenColor()
終わりに
いかがだったでしょうか?
うまくいきましたか?何かへんなところ、もっとこうした方が良いところなどがございましたらコメントお願いします!!!!
ありがとうございました!