2

私の仕事は、背景色などのすべてのパラメーターを使用して xib ファイルを動的に作成することです。xmlコンテンツを作成してからxibファイルを作成することで、xibファイルを作成しています。特定の色しかエンコードできません。たとえば、黒色の NSRGB タグは -

<object class="NSColor" key="IBUITextColor" id="1026485712">
    <int key="NSColorSpace">1</int>
    <bytes key="NSRGB">MCAwIDAAA</bytes>
</object>

赤色の場合 -

<object class="NSColor" key="IBUITextColor">
    <int key="NSColorSpace">2</int>
    <bytes key="NSRGB">MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA</bytes>
</object>

他の 16 進数のカラー コード (#0000CD) をこの NSRGB のエンコードされた色 (MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA) に変換する方法がわかりません。NSRGB カラー コードの 16 進数の色をエンコードする基準を知ることができません。

4

2 に答える 2

5

あなたがリストした「赤」は(239,0,52)または#EF0035であるに違いありません。私が正しければ、私はこれを理解したと思います...

私はこれを行うために.NETを使用していますが、Objective-Cで理解できると思います。

あなたはこれをしたいと思うでしょう:

16進値を10進値に変換します。

#0000CD --> (0,0,205)

各10進値を255で除算し、最大10桁を維持します。

(0,0,205) --> (0,0,0.8039215686)

これらの値を文字列に変換します。各値はスペースで区切られます(末尾にスペースはありません)。

0 0 0.8039215686

これをバイト配列に変換します。

48 32 48 32 48 46 56 48 51 57 50 49 53 54 56 54

0最後に「ゼロ」バイトを追加します。

48 32 48 32 48 46 56 48 51 57 50 49 53 54 56 54 0

これをbase64文字列に変換するだけです。私の結果は次の#0000CDとおりです。

MCAwIDAuODAzOTIxNTY4NgA=

=最後のは単なるプレースホルダーだと思いますが、これは私の専門分野ではありません。

注:A最初の値( "MCAwIDAAA")の最後に、私が理解していない余分なものがあり2つではなく3つのAでよろしいですか?

お役に立てれば!

于 2012-05-07T17:39:58.260 に答える
2

正解は、base64 バイトの "MCAwIDAAA" をデコードするだけです。例:

赤 MSAwIDAAA ----base64 デコード ---> 1 0 0

オレンジ MSAwLjUgMAA ----base64 デコード ---> 1 0.5 0

色のRGB値をキャッチ!

于 2013-04-10T02:27:57.180 に答える