2015-09-12 3 views
0

Я создал UIImageView с использованием AutoLayout. Я установил ограничения для верхнего, нижнего, верхнего и конечного (я хотел бы, чтобы ширина и высота изменялись в зависимости от размера телефона). В моем инспекторе атрибутов также отображается ширина и высота изображения. По какой-то причине, когда представление сначала загружено, ограничение Top Space to Top Layout игнорируется, и изображение отключается от экрана, а высота в IB используется (332). Как только фотография будет добавлена, вид изменится так, как ожидалось. Я NSLogged высоту кадра изображения, и она меняется. Я не понимаю, я думал, что рамка изображения будет всегда одинаковой. Я не получаю ошибок автоматического макета, все синее. enter image description hereUIImageView Изменение размера кадра с помощью AutoLayout

UIImage *imageToView = [existingImage resizedImageWithBounds:self.selectPhoto.frame.size];//Resize the image for better performance 
self.selectPhoto.contentMode =UIViewContentModeScaleAspectFit; 
NSLog(@"Select Photo Frame Size Height is %f", self.selectPhoto.frame.size.height); //The first time this screen loads, this height is 332. Every other time (after the user enters a new photo, the height is 310 which is what I want. 
self.selectPhoto.image = imageToView; 

Резюме: Почему мой self.selectPhoto (который является большим видом изображения, показанный на скриншоте) .frame меняется? Я дважды проверял документы Apple, и он ничего не говорит о смене кадра, основываясь на размере изображения. Это важно, потому что я изменяю размер изображения на основе размера рамки.

+0

Вы должны указать ограничение ширины и высоты для просмотра изображения и разместить изображение в формате uiview и предоставить ограничения uiview ведущих и tralig и сверху и снизу –

ответ

0

Я знаю, что imageViews может быть забавным с AutoLayout, когда вы не ограничиваете ширину и высоту. Многие изображения намного больше, чем imageView, и в результате вы можете видеть, что изображениеView растет до огромного размера (возможно, потому, что он не может вычислить его собственный размер содержимого). Я решил эту проблему раньше, ограничив ширину и высоту изображения, но, очевидно, вы хотите, чтобы ваша динамика была с размером устройства.

Я бы предложил использовать отдельный UIView в проекте, размер которого вы хотите, и встраивать в него UIImageView. Задайте правильные ограничения для обоих, и это должно решить вашу проблему.

3

Если вы используете AutoLayout.

Шаг 1: Выберите UIImageView, нажмите на кнопку в правом нижнем углу.

Шаг 2: Добавить ограничение по высоте и ширине.

Шаг 3: Выберите и перетащите ограничение в файл .h.

Шаг 4: Установите требуемую высоту и ширину в файле .m, используя код ниже.

_heightConstraint.constant = 100; 
_widthConstraint.constant = 100; 
Смежные вопросы