web-dev-qa-db-ja.com

UIButtonのストレッチ背景画像

UIButtonよりもテクスチャが非常に短くなりました。

私はこのテクスチャを手に入れました:

enter image description here

そして、私はこのボタンを作成する必要があります:

enter image description here

このテクスチャはどのように(タイルではなく)伸ばすべきですか?水平方向にストレッチ

Thnx

34

あなたが提供したサンプル画像から、あなたはUIImage 's resizableImageWithCapInsets:

UIImage *originalImage = [UIImage imageNamed:@"myImage.png"];
UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
UIImage *stretchableImage = [originalImage resizableImageWithCapInsets:insets];
[myButton setBackgroundImage:stretchableImage forState:UIControlStateNormal];
// the image will be stretched to fill the button, if you resize it.

UIEdgeInsets構造体の値は、引き伸ばしたくないマージンを決定します。あなたの左と右の値は、この幅程度です:

enter image description here

Topおよびbottomの値は、0(ボタンのサイズを垂直に変更したくない場合)、またはおそらく全高の半分にすることができます。

70
DrummerB

Xcode 6(およびiOS7 +ターゲット)を使用すると、画像アセットを操作するときにスライスエディターを使用できます。 Editor-> Show Slicingメニューでスライスモードを切り替えるか、Show Slicingを押しますエディターで特定の画像を選択するときのボタン(下に表示)。

Show Slicing button

その後、特定の表示縮尺の画像を選択し、ルールをドラッグするか、インセット値を手動で編集できます。

Rules

その後、Interface BuilderUIButtonBackground Image(IBボタンの表示は見栄えが悪いかもしれませんが、実行時には問題ないはずです)。

私のボタンはよく見えます(iOS 7.1シミュレーターとiOS 8デバイスを実行しています)。

enter image description here

このApple doc link が役立つ可能性があります。

38
Anton Gaenko

タイルを貼らないことで、使用できないと思います

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets

あなたがしたいことをする方法は使用することです:

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); // should be proportionally larger
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, (CGRect){{0,0}, newSize}, [yourImage CGImage]);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
3
David H

またはStretchable Imagesを使用:

UIImage* imgbkg =[[UIImage imageNamed: @"my_bkg_image.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];

[_button setBackgroundImage: imgbkg forState: UIControlStateNormal];

特定の側面を引き伸ばしたくない場合は、を使用します。

1
htafoya

使用する stretchableImageWithLeftCapWidth:topCapHeight: 方法。

参照: https://github.com/boctor/idev-recipes/tree/master/StretchableImages

1
jki