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;
}
Другие вопросы по тегам