iOS - Должно ли изменение фрейма UIImageView изменить размер своего изображения? - PullRequest
10 голосов
/ 11 сентября 2010

Может кто-нибудь ответить на это окончательно? Кажется, что иногда изменение фрейма UIImageView изменяет размер своего изображения, а иногда - нет.

Я загрузил изображение и создал с ним UIImageView размером около 100x100. Выполнение следующих действий не имеет абсолютно никакого эффекта:

myImageView.contentMode = UIViewContentModeScaleAspectFit;
myImageView.frame = CGRectMake(0, 0, 30, 30);

Очевидно, я хочу уменьшить изображение, но оно остается в полном размере.

РЕДАКТИРОВАТЬ: Если я сделаю это:

myImageView.clipsToBounds = YES;

Я получаю обрезанную часть изображения размером 30x30, но только верхний угол. Как мне сжать все изображение до 30x30?

Ответы [ 5 ]

3 голосов
/ 02 февраля 2015

Старый вопрос, но в моем случае проблема заключалась в попытке внести изменения в "viewDidLoad" для контроллера представления.Попробуйте изменить кадр в "viewDidLayoutSubviews".

- (void)viewDidLayoutSubviews
{
    //do uiimageview frame changing here
    ...   
}
2 голосов
/ 11 сентября 2010

Да, вы делаете правильные вещи.contentMode, используемый таким образом, должен сохранять размер изображения в вашем виде с сохранением аспекта.И очевидно, что смена кадра должна переместить и изменить размер представления.

Вы уверены, что ничего более не подозрительно?myImageView ноль по какой-то причине здесь?(Если это представление созданное интерфейсом, подключена ли розетка?)

1 голос
/ 11 апреля 2012

Попробуйте это:

myImageView. границы = CGRectMake (0, 0, 30, 30);

Мне не повезло с изменением фрейма UIImageView для масштабирования изображения. Попробуйте вместо этого изменить границы .

1 голос
/ 11 сентября 2010

Вы могли бы подумать, что это сработает, но везде есть люди, имеющие одну и ту же проблему.Единственный раз, когда я видел, как это работает, это не автоматическое масштабирование, а фактическое изменение размера и перерисовка изображения: Как пропорционально масштабировать UIImageView?

...