34

UIButton よりも非常に短いテクスチャを取得しました。

私はこのテクスチャを得ました:

ここに画像の説明を入力

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

ここに画像の説明を入力

このテクスチャを(タイルではなく)どのように伸ばす必要がありますか?横方向のストレッチ

thnx

4

5 に答える 5

70

あなたが提供したサンプル画像から、私はあなたが探していると確信していUIImageます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 構造体の値は、引き伸ばしたくないマージンを決定します。左と右の値は、次のように広い可能性があります。

ここに画像の説明を入力

上下の値は 0 (ボタンの縦方向のサイズを変更したくない場合) にするか、おそらく全高の半分にすることができます。

于 2012-09-27T15:38:36.420 に答える
3

タイリングしないことで、使用できないと思います

- (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;
于 2012-09-27T14:49:14.573 に答える
1

または伸縮可能な画像を使用する:

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

[_button setBackgroundImage: imgbkg forState: UIControlStateNormal];

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

于 2015-04-07T22:49:09.680 に答える
1

stretchableImageWithLeftCapWidth:topCapHeight:メソッドを使用します。

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

于 2013-02-01T21:31:30.417 に答える