backgroundColor colorWithPatternImageは、繰り返しではなく、ビューのサイズが変更されると引き伸ばされますか?
-
07-07-2019 - |
質問
colorWithPatternImageを使用して、繰り返し画像にビューの背景を設定しています。初めて背景を設定した後にビューのサイズが変わると、画像は新しいサイズで繰り返される代わりに引き伸ばされます-これを修正する方法はありますか?
これは私がやっていることです:
-
viewDidLoadでビューの背景を設定します:
frameView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@" frame-repeat.png"]];
-
サーバーからいくつかの情報を取得し、ビューを更新し、新しいコンテンツに合わせてビューのフレームサイズを変更します(通常、これはビューを高くすることを意味します)
まったく同じコードを使用してbackgroundColorを再度設定しても、 -
背景画像は引き伸ばされます。
最初の背景設定を行わず、サーバーからデータを取得してビューサイズを変更した後にのみ設定すると、見栄えがよくなります-繰り返し、ストレッチなし。ただし、これはデータのロード中にバックグラウンドがないことを意味します... looksいように見えます。
他の誰かがこれに遭遇していますか?
ご協力ありがとうございます!
解決
答えは非常に簡単です。電話するだけです
[[self view] setNeedsDisplay];
フレームサイズを変更するときのコントローラーで(または、どこでも、一番下の行は、フレームの変更後にsetNeedsDisplayメッセージをビューに送信することです)。 これが機能しない場合-背景色を設定してみてください。
これが機能しない場合は、独自のカスタムビューを実装し、その中でメソッドをオーバーライドします
- (void) drawRect:(CGRect) rect {
CGRect myBounds = self.bounds;
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor colorWithPatternImage:[UIImage imageNamed:@"frame-repeat.png.png"]]set];
CGContextFillRect(context, myBounds);
}
そして、サイズ変更後、setNeedsDisplayをビューに送信します。これは100%で機能します。
これが役に立ったと思います、Pawel