У меня есть UIImageView, и цель состоит в том, чтобы пропорционально уменьшить его, задав ему высоту или ширину.
UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//Add image view
[self.view addSubview:imageView];
//set contentMode to scale aspect to fit
imageView.contentMode = UIViewContentModeScaleAspectFit;
//change width of frame
CGRect frame = imageView.frame;
frame.size.width = 100;
imageView.frame = frame;
Размер изображения был изменен, но позиция не в левом верхнем углу. Каков наилучший подход к масштабированию image / imageView и как мне исправить положение?
objective-c
cocoa-touch
Ронни Лью
источник
источник
Ответы:
Исправлено легко, как только я нашел документацию!
источник
ScaleAspectFit
теперь естьenum UIViewContentMode
, так что вы бы установилиimageView.contentMode = UIViewContentMode.ScaleAspectFit
. Обратите внимание на период.translatesAutoresizingMaskIntoConstraints
не должен быть установлен вfalse
. У меня ушло много времени, прежде чем я понял, что это свойство препятствует изменению размераЯ немного поговорил о типах масштабирования, поэтому решил собрать статью о некоторых наиболее популярных типах масштабирования в режиме контента .
Соответствующее изображение здесь:
источник
Я только что попробовал это, и UIImage не поддерживает _imageScaledToSize.
В итоге я добавил метод в UIImage, используя категорию - предложение, которое я нашел на форумах Apple Dev.
В рамках всего проекта .h -
Реализация:
источник
UIGraphicsBeginImageContext(targetSize);
делать, если([UIScreen instancesRespondToSelector:@selector(scale)]) { UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0f); } else { UIGraphicsBeginImageContext(targetSize); }
поддерживать дисплеи сетчатки, не делая его размытымисточник
Вы можете попробовать сделать
imageView
размер, соответствующийimage
. Следующий код не проверен.источник
таким образом можно изменить размер UIImage
источник
Исходный код, размещенный сверху, хорошо работал для меня в iOS 4.2.
Я обнаружил, что создание CGRect и указание всех значений top, left, width и height было самым простым способом отрегулировать положение в моем случае, который использовал UIImageView внутри ячейки таблицы. (Еще нужно добавить код для освобождения объектов)
источник
Установите ImageView, выбрав Mode
Aspect Fill
и установитеClip Subviews
флажок.источник
Это прекрасно работает для меня Swift 2.x:
источник
Установите свой
UIimageview
масштаб .........источник
Для Свифта:
источник
UIImageView + Scale.h:
UIImageView + Scale.m:
источник
Я использовал следующий код. Где imageCoverView это UIView содержит UIImageView
источник
Если предложенные здесь решения не работают для вас, и ваш актив изображения на самом деле представляет собой PDF, обратите внимание, что XCode на самом деле обрабатывает PDF иначе, чем файлы изображений. В частности, он не может масштабироваться для правильного заполнения PDF-файлом: вместо этого он оказывается мозаичным. Это сводило меня с ума, пока я не понял, что проблема была в формате PDF. Преобразование в JPG, и вы должны быть в порядке.
источник
Обычно я использую этот метод для своих приложений ( Swift 2.x совместимый):
источник
Я думаю, что вы можете сделать что-то вроде
источник
Вот как вы можете легко масштабировать его.
Это работает в 2.x с симулятором и iPhone.
источник