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>
関連記事
-
アプリ内で自動スリープの設定を無効化する
「設定」アプリ内で設定したスリープ時間設定を無効にするためのコード。 アプリがバックグラウンドにな
-
”No Scheme”になってしまった場合の対応
知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない
-
UICollectionViewが画面回転した時にレイアウトが崩れた時の対応
UICollectionViewCellのサイズを、内容に合わせて動的に変えた時に起こる問題に関して
-
CALayerの管理
CALayerはNSKeyValueCodingを実装している(Core Animation Ext
-
UISegmentedControlに見栄え良く背景色を設定する
UISegmentedControlをiOS7で使おうとすると、基本の背景色が「透明」になりますが、
-
コードでiPhone6 Plusを識別する簡単な方法
表題の通り、コードでiPhone6 Plusを識別する簡単な方法です。 iPhone6 Plu
-
UIAlertControllerの取り扱い
旧聞ですが日本語版のStackOverflowが始動したようですね。 個人的な印象は「フィルタされ
-
preferredContentSizeをUINavigationContorllerのPop時に再設定する
popoverで表示しているViewControllerのサイズを、他のViewController
-
WSCoachMarksViewをSwiftで使う場合の手順
Objective-Cで記述されてるライブラリ全般に当てはまることもあるんですが、個別でやることも含
-
画面回転をしたあとに、UITextViewの先頭を表示する
回転によりサイズが可変するUITextViewで、縦向き(ポートレイト)から横向き(ランドスケープ)