7

私はiPhoneUIにカスタムボタンを追加している最中であり、Appleのアプリからガラスのように見えるようにしたいと考えています。私は良いデフォルトのガラス画像を持っていますが、私が望む色合い(赤、緑、青など)ごとに別々の画像を持たなければならないのは嫌です。

グレースケールPNGをロードして、希望の色に調整する方法はありますか?さらに良いことに、カスタム画像をまったくロードせずにAppleのガラスのような外観を得る方法はありますか?

4

6 に答える 6

7

少し遅れましたが、私のような誰かがこの種の情報を検索する場合に備えて:UISegmentedControl単一のボタンで a を使用し、それを としてmomentary設定し、その を に設定しtintColorます。このように、色と同じ数の PNG を準備する必要はなく、フレームワークがすべてのレンダリングを処理します。

例:

UISegmentedControl *cancelButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Cancel"]];
[cancelButton setSegmentedControlStyle:UISegmentedControlStyleBar];
[cancelButton setTintColor:[UIColor colorWithRed:0.8 green:0.3 blue:0.3 alpha:1.0]];
[cancelButton setMomentary:YES];
[cancelButton addTarget:self action:@selector(didTapCancel:) forControlEvents:UIControlEventValueChanged];
[self addSubview:cancelButton];
[cancelButton release];
于 2011-02-11T16:16:11.323 に答える
6

常に優れた「Cocoa With Love」サイトにサンプルがあります: CoreGraphic で光沢グラデーションを描画する

于 2008-10-29T10:52:43.533 に答える
2

私が知っているワンライナーの方法はありませんが、デフォルトのグレースケール画像を単色で合成する(つまり、上に描画する)ことで、目的の効果を得ることができる場合があります。Core Graphics のドキュメントに目を通してみると、十数種類の異なる合成方法 (たとえば、カラー バーン) があり、それらのいくつかの組み合わせによって、必要な効果が得られることがわかります。

于 2008-09-23T23:00:00.790 に答える
1

iPhone UI についてはわかりませんが、単一の PNG を使用してカラー バリアント グラフィックスを作成できます。

つまり、これらのページの両方のロゴ (左上):

製品

ショップ

このPNGを使用

代替テキスト http://47degrees.com/images/logos/47_degrees.png

ガラスのようにするには、背景色を色合いとして設定する必要があると思います。

于 2008-09-23T15:17:26.957 に答える
0

連絡先編集ビューの [連絡先の削除] ボタンで使用されるレンダリングとほぼ一致する独自のカスタム ボタンを作成することになりました。

興味のある方は、次の github で見つけることができます。

PFTintedButton

于 2010-11-08T00:49:34.827 に答える
0

私はこれを行いましたが、かなりうまく機能します:

iOS: RGB フィルターをグレースケール PNG に適用する

ただし、それはごまかしです。追加しているため、(たとえば)各ピクセルの赤成分については、 R_dest = R_src + R_tint

たとえば、きめ細かな制御が必要な場合は、RGB コンポーネントを平均して (適切な重み付けを使用して) 各ピクセルのグレースケール値を抽出し、この値に色合いを掛けると、結果の色はグレースケール (Sr) になります。 ,Sg,Sb) * {Tr,Tg,Tb}

これには、メモリのチャンクを作成し、このチャンクに描画するビットマップ コンテキストを作成し、このコンテキストにイメージを描画し、保管のためにメモリ チャンク全体をコピーし、処理する必要があります。コピーからデータを取得し、元のバッキング ストアを変更します。元のバッキング ストアからイメージを抽出し、割り当てたすべてのものを解放します。

RGBAピクセルバイトデータからUIImageを再構成する際の問題

このライブラリはすべてを行ってくれます。これは最も効率的なルートではありませんが、仕事は完了します。彼は calloc を使用すべきときに malloc を使用しています。

于 2011-09-05T04:14:21.403 に答える