9

UIButtonの背景画像に何らかのオフセットを追加する方法はありますか?

のカスタム背景画像がいくつかありますUIButton。これらの画像には、有効なボタン領域の周囲に 5 ピクセルのドロップ シャドウ領域があります。これらの画像を使用するときは、タイトル ラベルを移動し、フレームを調整し、計算を行ってボタンを正しく配置する必要があります。

理想的には、その画像 (または ) にオフセット(x = -5px、y = -5px)のようなものを設定しUIButtonて、画像を背景として UIButton に割り当てると、そのオフセットによって水平方向に移動し、垂直に。

HTML では、ボタン div に固定サイズを設定し、background-position を指定して背景画像をオフセットします。

iOSに似たようなものはありますか?

4

6 に答える 6

19

設定setTitleEdgeInsets:または設定は、の背景画像にはsetImageEdgeInsets:影響を与えないようですが、画像(およびタイトル)にのみ影響を与えます。UIButton

-(CGRect)backgroundRectForBounds:(CGRect)bounds必要な量 (私の場合は 5) だけ境界四角形を膨らませる場所をオーバーライドすることになりました。

于 2013-10-22T08:14:46.960 に答える
13

これは古い質問ですが、答えはもっと良いと思います。これを行う 1 つの方法は、ボタンをつかみ、その画像を取得することです。したがって、IB でボタンをセットアップした場合、objc では次のようになります。

UIImage *i = [self.button backgroundImageForState:UIControlStateNormal];

コードでそれを行った場合は、すでにこれらのものを持っています!

そして、違いを調整するために、配置四角形をセットアップしたいと考えています。

i = [i imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, -5, -5)];

(上、左、下、右)。

ボタン画像を元に戻します。

[self.button setBackgroundImage:i forState:UIControlStateNormal];

自動レイアウトは、整列長方形を使用して整列します。微調整するには、アライメントの定数を変更する必要がある場合があります。

于 2015-03-28T19:32:12.270 に答える
1

setTitleEdgeInsets:両方で遊んで、setImageEdgeInsets:必要な結果を得ることができます。

于 2013-10-21T10:47:35.617 に答える
1

UIbuton の属性インスペクターでは、タイトル/画像のインセット値を設定できます。

ここに画像の説明を入力

于 2013-10-21T10:35:40.840 に答える
0

オフセットのためにこれを試してください

[buttonName setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 12.0, 0.0, 0.0)];
于 2013-10-21T10:33:02.367 に答える