plistファイルに色を入れる
公開日:
:
Tips NSData, NSKeyedArchiver, plist, UIColor
plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけど、plistはバイナリ値も許可しているのでUIColorをNSKeyedArchiverでNSData化したものを直接入れることも不可能ではない。
以下のコードを実行した結果を入れれば、plistに入れるべき値がわかる。多分他の値でも大丈夫。
RGBA値を読みだして[UIColor ColorWithRed:green:blue:alpha:]を実行するのとどっちが楽か。plistの初期値をNSUserDefaultsに書き込む場合は有効だが、その場合NSUserDefaultsの初期値設定メソッド使ったほうが楽かもしれない。
NSLog(“%@”, [NSKeyedArchiver archivedDataWithRootObject:(ここに適当なUIColorを設定)]);
UIColor絡みの余談になるが、[UIColor whiteColor]はRGB値に分解する[UIColor getRed:green:blue:alpha:];
では正しい値を返さない。グレースケール値全般は「RGB色空間」ではなく「グレースケール空間」で扱われる([UIColor ColorWithWhite:alpha]に対応する)からというのが理由らしい。
もう一つ余録として[ColorWithRed:green:blue:alpha]メソッドで明示的に作った黒と白をNSKeyedArchiverでNSData化した値を掲載。
こういう数列には「復活の呪文」的なものを感じる。
[黒]
<62706c69 73743030 d4010203 04050825 26542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572d106 0754726f 6f748001 a3090a1b 55246e75 6c6cd80b 0c0d0e0f 10111213 14151617 18191a56 5549426c 75655755 49416c70 68615c4e 53436f6c 6f725370 61636555 55495265 64562463 6c617373 5f101555 49436f6c 6f72436f 6d706f6e 656e7443 6f756e74 554e5352 47425755 49477265 656e2200 00000022 3f800000 10022200 00000080 02100445 30203020 30220000 0000d31c 1d1e1f22 24582463 6c617373 65735b24 636c6173 7368696e 74735a24 636c6173 736e616d 65a22021 57554943 6f6c6f72 584e534f 626a6563 74a12357 4e53436f 6c6f7257 5549436f 6c6f7212 000186a0 5f100f4e 534b6579 65644172 63686976 65720008 00110016 001f0028 00320035 003a003c 00400046 0057005e 00660073 00790080 0098009e 00a600ab 00b000b2 00b700b9 00bb00c1 00c600cd 00d600e2 00ed00f0 00f80101 0103010b 01130118 00000000 00000201 00000000 00000027 00000000 00000000 00000000 0000012a>
[白]
<62706c69 73743030 d4010203 04050825 26542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572d106 0754726f 6f748001 a3090a1b 55246e75 6c6cd80b 0c0d0e0f 10111213 14151617 18191a56 5549426c 75655755 49416c70 68615c4e 53436f6c 6f725370 61636555 55495265 64562463 6c617373 5f101555 49436f6c 6f72436f 6d706f6e 656e7443 6f756e74 554e5352 47425755 49477265 656e223f 80000022 3f800000 1002223f 80000080 02100445 31203120 31223f80 0000d31c 1d1e1f22 24582463 6c617373 65735b24 636c6173 7368696e 74735a24 636c6173 736e616d 65a22021 57554943 6f6c6f72 584e534f 626a6563 74a12357 4e53436f 6c6f7257 5549436f 6c6f7212 000186a0 5f100f4e 534b6579 65644172 63686976 65720008 00110016 001f0028 00320035 003a003c 00400046 0057005e 00660073 00790080 0098009e 00a600ab 00b000b2 00b700b9 00bb00c1 00c600cd 00d600e2 00ed00f0 00f80101 0103010b 01130118 00000000 00000201 00000000 00000027 00000000 00000000 00000000 0000012a>
関連記事
-
Bitbucket課題の記法サンプル
Bitbucketの課題、およびwikiで利用できる記法についての記事です。 利用できる記法に
-
UISegmentedControlに見栄え良く背景色を設定する
UISegmentedControlをiOS7で使おうとすると、基本の背景色が「透明」になりますが、
-
iPad用storyboard⇔iPhone用Storyboardへの変換
iPad用アプリとしてiPad用前提のstoryboardから、iPhone対応にするにあたり、si
-
NSDictionary/NSMutableDictionaryの”valueForKey:”と”objectForKey:”の違い
表題にある通り、似ていて混同する(そして、取り違えても「たいてい」普通に動作する)NSDiction
-
UIActionSheetの文字がブレて多重表示される
UIActionsheetを使っていて、iOS7/iPadの組み合わせで起こる不具合らしき挙動が起こ
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
NSAttributedStringをローカライズする方法
NSAttributedStringをLocalizeするうまい方法はないものかと探したら、これが手
-
Xcode8で余計なログを抑制する
Xcode8に更新してから、妙にログが増えたので、NSLogで明示したのと実行時エラー以外のログを吐
-
メソッドの呼び出し元を調べる
特定のメソッドに関して、そのメソッドをコールしているメソッド群を調べるための手順。 (1)調べたい