Я пишу код, чтобы использовать пользовательское изображение в качестве фона для UIView
.Как изменить размер UIImage, созданного с помощью resizableImageWithCapInsets, когда используется для UIImageView/UIView
Приложение работает только на портрете. До сетчатки экрана 4" , я использовал фиксированный размер, рисованный PNG в качестве фонового изображения (card.png
ниже) У меня был такой код:.
UIView* frontView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)];
frontView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
UIImage* cardImage = [UIImage imageNamed:@"card.png"];
UIImageView* im = [[UIImageView alloc] initWithImage:cardImage];
im.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;
[frontView addSubview:im];
// frontView has a bunch of stuff added...
Как и следовало ожидать, когда я бег это на iPhone 5, все может иметь динамический размер и расположение, за исключением рисованного png, card.png
. Так что фоновое изображение не использует всю высоту, которая доступна ...
Так что (я думаю) я хочу что-то вроде этого ...
UIImage* cardImage = [[UIImage imageNamed:@"card_resizable.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(72, 0, 60, 0)];
Я перерисовал card.png
как card_resizable.png
- это высота 140 пикселей, в середине есть 8-пиксельный кусок, который я хочу плитку, поэтому верхняя вставка имеет 72 пиксела в высоту, а нижняя - 60 пикселей.
Каков следующий шаг?
Должен ли я создать UIImageView
с динамическим размером frontView
?
Как сделать изменяемое по размеру изображение, изменить размер?
Несколько вещей, которые я пробовал ... ни один из них не привел к черепице изменяемого размера изображения.
Приветствия, Gavin
Обновление:
Я был неправильно установки значения пикселей для UIEdgeInsetsMake(72, 0, 60, 0)
Эти значения основаны на @2x
изображения. Когда изменено на UIEdgeInsetsMake(36, 0, 30, 0)
- я получаю правильное вертикальное изменение размера.
Как Майк отметил, что мне нужно, чтобы установить размер UIImageView
к родителю, и правильно установить его autoresizingMask
:
im.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Я знаю, что есть UIImageView
размера динамически размера, правильно заполнить его родительский вид - frontView
(я дал ему зеленый фон для визуального контроля на экране 3.5 "и 4".
Изменчивое изображение, cardImage
, также изменяет размер, правильно, в вертикальной плоскости.
Привет Майк, спасибо за указание тех вещей из: установление границ и маски автоматического изменения. Я попытался установить границы и использовал маску изменения размера ... Но неправильная маска изменения размера мне нужна «UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight', как вы указали. Как бы то ни было, реальная проблема была связана с моими вставками с шапками ... Значения 72 и 60 были основаны на образе '@ 2x' (ни один из вас, вы, ребята, не зная об этом) ... когда я помещаю тогда в 1x пространство, Я получил желаемое вертикальное изменение размера (с правильной 'autoresizingMask' на месте. –