2013-09-11 3 views
3

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

У меня есть UIImageView (созданный на раскадровке), на котором есть несколько указателей жестов. Я пытаюсь изменить размер этого UIImageView на основе размера экрана, чтобы воспользоваться 4-дюймовым дисплеем.

Похоже, что поскольку изображение было построено с использованием раскадровки, я не могу изменить его программно ???

Мой текущий код выглядит следующим образом:

//determine screen size, set scoring button width based on device size. 
CGFloat lCurrentHeight = self.view.bounds.size.height; 
if (lCurrentHeight == 568.0) { 
    CGRect _redHeadImageFrame = _redHeadImage.frame; 
    _redHeadImageFrame.size.width = 220; 
    [_redHeadImage setFrame:_redHeadImageFrame]; 
} 

Все идеи ??? Благодарю.

ответ

0

да вам нужно использовать, как это,

CGFloat lCurrentHeight = [[UIScreen mainScreen] bounds].size.height; //it will give 568 

CGFloat lCurrentHeight = self.view.bounds.size.height;//it will give 548,in your case that condition failed. 
2

Если вы используете автозапуск, вы должны изменить его с помощью указателя изображения, потому что ручное изменение кадра в этом случае не будет работать.

EDIT

Вы можете создать IBOutlet для ширины ограничения, как вы это делаете для других элементов управления - просто выберите ограничения в IB и переместить его с правой кнопкой на файл заголовок. Чем в ограничении изменения кода:

[self.imageWidthConstraint setConstant:100.0]; 
+0

Я использую автомат. В IB есть два ограничения на ширину этого изображения и выравнивание заднего края (который требуется, чтобы я хотел иметь изменения с новым фреймом). Как использовать withConstraints при настройке нового фрейма? благодаря! – SteveM

0

Там нет никакой разницы в изменении размеров UIViews созданного кода или раскадровку. Это точно то же самое: установка рамки представления, как вы это делаете.

Что может происходить:

  1. Ваше состояние, если это никогда не верно. Вы проверили с точкой останова, если код внутри него даже называется? Возможно, есть некоторая ошибка в прямом сравнении float. См. this. Кроме того, см. this для лучшего понимания того, как проверить, является ли это 4-дюймовым дисплеем.

  2. Если на самом деле вызывается код setFrame:, проверьте, используете ли вы автоматический макет в своем представлении. Возможно, есть ограничение в UIImageView. В этом случае вы должны играть с этим ограничением, чтобы правильно изменить вид.

Смежные вопросы