この質問に対する回答はこれです。幅が伸び、高さが固定された伸縮性のある画像があるとします(単純化のため)。
画像が31px幅で( - ストレッチしません - 15ピクセルの固定サイズ、1ピクセルが引き伸ばされます)あなたの層を想定し
はCALayerのサブクラスである、あなたのinitメソッドは次のようになります。
- (id)init
{
self = [super init];
if (self) {
UIImage *stretchableImage = (id)[UIImage imageNamed:@"stretchableImage.png"];
self.contents = (id)stretchableImage.CGImage;
self.contentsScale = [UIScreen mainScreen].scale; //<-needed for the retina display, otherwise our image will not be scaled properly
self.contentsCenter = CGRectMake(15.0/stretchableImage.size.width,0.0/stretchableImage.size.height,1.0/stretchableImage.size.width,0.0/stretchableImage.size.height);
}
return self;
}
をドキュメントごとに
のcontentsCenter矩形は0〜1の値を持たなければなりません。
単位矩形(0.0,0.0)(1.0,1.0)にデフォルト設定され、画像全体が拡大縮小されます。長方形が単位矩形の外側に広がる場合、結果は未定義です。
これはそれです。うまくいけば、他の誰かがこれを見つけると、開発時間を節約できます。
私はそれが役に立ちました。ありがとう! – duci9y
画像の縮尺を使用する方が良いです。 –
画像の@ 3xバリアントが存在しない場合は、iPhone 6 plusで提案されたソリューションが失敗します。画像のスケールプロパティを使用する方がよいでしょう。 'self.contentScale = strechableImage.scale'画像のすべての変種(@ 2x @ 3x)が存在しない場合でも動作します。 –