2

我正在尝试设置一个显示图像并允许用户根据需要放大/缩小和平移图像的简单视图。我启用了自动布局,并且视图由带有嵌入式 UIImageView 的 UIScrollView 组成。两个视图的大小都适合整个屏幕。

我使用了 Apple 的 ScrollViewSuite(“1_TapToZoom”示例)中的逻辑和代码,一切似乎都是正确的。但是,当捏视图时,ScrollView/ImageView 会全部变形并且无法正确响应。很难解释这种行为,但让我们称之为“时髦”。大小和方面的变化不一致。

我的猜测是这与自动布局约束有关。有没有人对此有一些建议/修复?

4

1 回答 1

0

发生的问题是缩放过程中图像视图的位置变化。在缩放过程中,imageview 的原点位置将变为负值。我相信这就是为什么会发生生涩的运动。同样,缩放完成后,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;
}
于 2013-03-18T05:05:05.510 回答