中年プログラマーの息抜き

ブログをはじめました。気の向くままにプログラム関連ネタをメモしていきます。

日当-ヒナタ- swift4 -7- UIColorをIntで扱う

はじめに

Androidアプリ日当-ヒナタ-のiOS版を作り始めたのでその経過を少しアップします。普段の仕事ではSWIFTを触らないのでとても新鮮な感じと少し不安なとこもあり。。。少し機能を削り、早めのストア公開を目指します。 picker系のコントロールが少し手こずります。Androidでは0xFFFFFFFFのような感じでARGBを指定しました。iOSというかSWIFTではエラーになるので、とりあえず負数を直接定義したのですが、他に方法がないのでしょうかね。。(符号あり(先頭ビット[1]でマイナス)+16進記述の整数リテラル

機材

Macbook air Xcode Version 10.1 Apple Swift version 4.2.1
・iphone5c テスト機

UIColorをIntで扱う。

保存する時は選択した色の数字をRealmへ保存してます。コンピュータ的には良いですが、コメントで16進書いとかないとわからなくなりますね ・・ あ、、それと、透明度が扱えないかも。。

    ---
    ---
    ---
    ---
    let list: DictionaryLiteral = [
        "ピーコック": -12134693,
        "ミカン": -18312,
        "バナナ": -272549,
        "バジル": -11421879,
        "セージ": -8722497,
        "ブルーベリー": -11238163,
        "ラベンダー": -5980676,
        "ブドウ": -2380289,
        "フラミンゴ": -30596,
        "グラファイト": -1973791
    ]
    //使い方
    UIColor.create(hex: -11421879)
    UIColor.create(hex: list[3].value)
    ---
    ---
    ---
    ---
    ---
extension UIColor {
    static func create(hex: Int) -> UIColor {
        return UIColor(
            displayP3Red: CGFloat((hex & 0xFF0000) >> 16) / 255.0
            , green: CGFloat((hex & 0xFF00) >> 8) / 255.0
            , blue: CGFloat(hex & 0xFF) / 255.0
            , alpha: 1.0
        )
    }
}
    ---
    ---
    ---
    ---

参考:Androidの定義。

    "ピーコック", 0xFF46D6DB
    "ミカン", 0xFFFFB878)
    "バナナ", 0xFFFBD75B
    "バジル", 0xFF51B749
    "セージ", 0xFF7AE7BF
    "ブルーベリー", 0xFF5484ED
    "ラベンダー", 0xFFA4BDFC
    "ブドウ", 0xFFDBADFF
    "フラミンゴ", 0xFFFF887C
    "グラファイト", 0xFFE1E1E1

動作イメージ

f:id:tm-b:20190204042539p:plain

【Android】日当-ヒナタ-

ほぼほぼ、完成。。

なんとかリリースまで・・がんばりたい

ab39