UIButtonよりもテクスチャが非常に短くなりました。
私はこのテクスチャを手に入れました:
そして、私はこのボタンを作成する必要があります:
このテクスチャはどのように(タイルではなく)伸ばすべきですか?水平方向にストレッチ
Thnx
あなたが提供したサンプル画像から、あなたは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構造体の値は、引き伸ばしたくないマージンを決定します。あなたの左と右の値は、この幅程度です:
Topおよびbottomの値は、0(ボタンのサイズを垂直に変更したくない場合)、またはおそらく全高の半分にすることができます。
Xcode 6(およびiOS7 +ターゲット)を使用すると、画像アセットを操作するときにスライスエディターを使用できます。 Editor-> Show Slicingメニューでスライスモードを切り替えるか、Show Slicingを押しますエディターで特定の画像を選択するときのボタン(下に表示)。
その後、特定の表示縮尺の画像を選択し、ルールをドラッグするか、インセット値を手動で編集できます。
その後、Interface BuilderでUIButtonBackground Image(IBボタンの表示は見栄えが悪いかもしれませんが、実行時には問題ないはずです)。
私のボタンはよく見えます(iOS 7.1シミュレーターとiOS 8デバイスを実行しています)。
このApple doc link が役立つ可能性があります。
タイルを貼らないことで、使用できないと思います
- (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;
またはStretchable Imagesを使用:
UIImage* imgbkg =[[UIImage imageNamed: @"my_bkg_image.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];
[_button setBackgroundImage: imgbkg forState: UIControlStateNormal];
特定の側面を引き伸ばしたくない場合は、を使用します。
使用する stretchableImageWithLeftCapWidth:topCapHeight:
方法。
参照: https://github.com/boctor/idev-recipes/tree/master/StretchableImages