0

ボタンを表す次の画像があります。

ここに画像の説明を入力してください

その画像を使用して、それを背景として使用するボタンを作成したいのですが、それは私が提供した画像よりもはるかに広いです。

これが私が試した2つの方法です:

  UIButton *emailSupportButton = [[UIButton alloc] initWithFrame:CGRectMake(25, 315, 200, 60)];
  [emailSupportButton setTitle:@"Email Support" forState:UIControlStateNormal];
  [emailSupportButton setImage:[UIImage imageNamed:@"toolbar-button"] forState:UIControlStateNormal];

この方法では、ボタンの画像が引き伸ばされず、.pngが通常どおりに表示されるようになります。

私が試したもう1つの方法は、背景画像を設定することです。

  UIButton *emailSupportButton = [[UIButton alloc] initWithFrame:CGRectMake(25, 315, 200, 60)];
  [emailSupportButton setTitle:@"Email Support" forState:UIControlStateNormal];
  [emailSupportButton setBackgroundImage:[UIImage imageNamed:@"toolbar-button"] forState:UIControlStateNormal];

この方法では、目的の効果が得られるのではなく、画像が非常に醜い方法で引き伸ばされ、ボタンがほぼ楕円形になり、境界線が非常に醜くなります。

カスタムボタンを作成する正しい方法を使用していないという問題ですか、それとも私の画像が私が達成しようとしているタスクに適していないという問題ですか?私の画像は長方形で、ボタンの境界線が含まれていないはずで、UIButtonに境界線/丸めを処理させますか?私の画像はすでにボタンのサイズになっているはずですか(これは少し制限があるようです)?

4

1 に答える 1

1

リストした2番目の方法(コード単位)は、必要な方法です。足りないのは伸縮性のある画像です。これを試して:

UIButton *emailSupportButton = [[UIButton alloc] initWithFrame:CGRectMake(25, 315, 200, 60)];
[emailSupportButton setTitle:@"Email Support" forState:UIControlStateNormal];
UIImage *backgroundImage = [UIImage imageNamed:@"toolbar-button"];
CGSize size = backgroundImage.size;
backgroundImage = [backgroundImage stretchableImageWithLeftCapWidth:size.width/2.0 topCapWidth:size.height/2.0];
[emailSupportButton setBackgroundImage:backgroundImage forState:UIControlStateNormal];

iOS 5以降にのみデプロイする場合は、新しい-[UIImage resizableImageWithCapInsets:(UIEdgeInsets)capInsets];iOS6を使用することをお勧めします。-[UIImage resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode];

于 2012-10-18T16:24:05.020 に答える