iOS 6 Autolayout - ScrollView со встроенным ImageView не масштабируется должным образом
Я пытаюсь настроить простой вид, который отображает изображение и позволяет пользователям увеличивать / уменьшать и панорамировать изображение по своему желанию. Я включил autoLayout, и представление состоит из UIScrollView со встроенным UIImageView. Оба вида рассчитаны на весь экран.
Я использовал логику и код из Apple ScrollViewSuite (пример "1_TapToZoom"), и все кажется правильным. Однако при сжатии вида ScrollView/ImageView искажается и не отвечает должным образом. Трудно объяснить поведение, но давайте просто назовем это "в стиле фанк". Размер и внешний вид изменяются непоследовательно.
Я думаю, что это связано с ограничениями автопоставки. У кого-нибудь есть предложения / исправления для этого?
1 ответ
Возникающие проблемы - это изменение местоположения просмотра изображения в процессе масштабирования. Исходное местоположение просмотра изображения изменится на отрицательное значение при масштабировании. Я считаю, что именно поэтому происходит отрывистое движение. Кроме того, после завершения масштабирования imageView все еще находится в неправильном месте, что означает, что свитки будут смещены.
Если вы реализуете -(void) scrollViewDidZoom:(UIScrollView *)scrollView
и зарегистрируйте фрейм UIImageView в течение этого времени, чтобы увидеть, как меняется его источник.
В итоге я заставил все работать, реализовав такую стратегию: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch20p573scrollViewAutoLayout/ch20p573scrollViewAutoLayout/ViewController.m
И, кроме того, изменяя рамку contentView при масштабировании
-(void) scrollViewDidZoom:(UIScrollView *)scrollView {
CGRect cFrame = self.contentView.frame;
cFrame.origin = CGPointZero;
self.contentView.frame = cFrame;
}