У меня есть фотография, показывающая приложение iOS, в котором пользователь должен иметь возможность просматривать и масштабировать изображение. В соответствии с требованием изображение должно отображаться в полном размере (прозрачная часть не должна отображаться, а изображение должно заполнять весь экран), и поэтому я использовал режим AspectFill
для UIImageView
. Чтобы реализовать функцию масштабирования, используется UIScrollView
и реализован метод делегирования viewForZoomingInScrollView
UIScrollView
. Представление изображения связано с четырьмя краями прокрутки в StoryBoard
, а два ограничения (imageHeight и imageWidth) подключены к IBOutlet. Эти ограничения будут обновлены в методе ViewControllers viewDidLayoutSubviews
.UIView внутри проблемы с масштабированием Scrollview
Я добавил код ниже для справки.
- (void)setImageViewModes {
self.scrollView.minimumZoomScale = CALCULATD_ZOOM_SCALE;
self.pageImageView.contentMode = UIViewContentModeScaleAspectFill;
}
pragma mark - UIScrollView Delegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return MY_IMAGE_VIEW;
}
- (void)updateImageViewConstraints {
self.imageHeight.constant = CGRectGetHeight(self.scrollView.frame);
self.imageWidth.constant = CGRectGetWidth(self.scrollView.frame);
[self.view layoutIfNeeded];
}
Однако при попытке уменьшить изображение, оно восстанавливается в исходное состояние и внешняя часть изображения обрезается (Это отображать только начальный заполненную часть изображения). Существует ли какое-либо обходное решение для просмотра всего изображения при уменьшении масштаба?
Я попытался установить минимальную шкалу масштабирования для UIScrollView (у меня есть метод в моем коде для вычисления минимальной масштабной шкалы изображения), и функция масштабирования работает. Однако, когда мы уменьшаем масштаб изображения, UIIMage всегда перемещается в верхний левый угол прокрутки (привязанный к снимку экрана для справки).
Я нашел решение этой проблемы на Center content of UIScrollView when smaller (третий ответ), подклассифицируя UIScrollView и настраивая рамку просмотра изображения в методе прокрутки «layoutSubviews». Это отлично работает при уменьшении. Но когда мы масштабируем и прокручиваем изображение, чтобы увидеть край/боковую часть, scrollview перенастраивает изображение в центр, и я не могу видеть боковую часть изображения в режиме масштабирования. Любой обходной путь для этой проблемы?
Пробовали ли вы CGAffineTransformMake недвижимость? – Vignesh