1

を使用する/理解するのが難しいresizableImageWithCapInsets

次のようにボタンを設定しました。

facebookLoginButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 20, 300,50)];
facebookLoginButton.autoresizingMask = UIViewAutoresizingFlexibleWidth;

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"]
                           resizableImageWithCapInsets:UIEdgeInsetsMake(20,90,20,56)];
[facebookLoginButton setBackgroundImage:facebookButton forState:UIControlStateNormal];

[facebookLoginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[facebookLoginButton setTitle:NSLocalizedString(@"FacebookLoginButton", "Facebook Login Button") forState:UIControlStateNormal];
[facebookLoginButton setTitleShadowColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:.35] forState:UIControlStateNormal];
[facebookLoginButton addTarget:self action:@selector(facebookLoginButton:) forControlEvents:UIControlEventTouchUpInside];

ご覧のとおり、ボタン ビューのフレームは 300x50 ピクセルです。網膜用の画像を作成しました(後で縮小します)。

画像は PS で作成された 144x100px の png です。これは、フレームの高さ (uibutton の場合) と Facebook F に必要なスペースの 2 倍です。アイデアは、F を左側に固定し、以下で強調表示されている伸縮可能な部分を保持することです。

ここに画像の説明を入力

それが役立つ場合は、画像自体を次に示します。

ここに画像の説明を入力

現在の結果は次のとおりです。

ここに画像の説明を入力

入力する正しいインセットを見つけようとしています。これについて多くのチュートリアルを検索しましたが、インセットが実際にどのように機能するかを理解するのに十分な説明はありません. 誰かがこれを説明したり、計算方法に関するチュートリアルにリンクしたりできれば、さらに良いでしょう。

理論的には繰り返す必要がないため、現在、上下を 0 に設定しています。静的な左が静的な右よりも大きいだけです。右側のインセットは丸みを帯びた境界線専用で、中央部分は繰り返す必要があります。

4

1 に答える 1

0

Retina 用のイメージを使用する場合は、名前の後に必ず@2x.
また、単位 (ピクセルではなく) でインテントを指定する必要があることに注意してください。

UIImage *facebookButton = [[UIImage imageNamed:@"FacebookLogin"]
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0,40,0,10)];
于 2013-03-30T01:33:20.250 に答える