backgroundColor colorWithPatternImage заканчивается растягиванием, если размер вида изменяется, вместо того, чтобы повторяться?
-
07-07-2019 - |
Вопрос
Я устанавливаю фон вида для повторяющегося изображения, используя colorWithPatternImage.Если размер вида изменяется после того, как я установил фон в первый раз, изображение растягивается вместо того, чтобы повторяться для нового размера - есть идеи, как я могу это исправить?
Это то, что я делаю:
установите фон представления в viewDidLoad:
FrameView.backgroundColor = [UIColor colorWithPatternImage:[Имя пользовательского изображения:@"frame-repeat.png"]];
возьмите некоторую информацию с сервера, обновите вид, измените размер рамки вида, чтобы она соответствовала новому содержимому (обычно это означает увеличение размера вида).
фоновое изображение теперь растягивается, даже если я снова установлю backgroundColor, используя точно такой же код.
Если я не выполняю начальный набор фона, а устанавливаю его только после получения данных с сервера и изменения размера представления, это выглядит великолепно - повторяется и не растягивается.Однако это означает отсутствие фона во время загрузки данных...выглядит уродливо.
Кто-нибудь еще сталкивался с этим?
Спасибо за любую помощь!
Решение
Ответ довольно прост, просто позвоните
[[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%.
Надеюсь, это было полезно, Павел