iOS 6 Autolayout - 带有嵌入式ImageView的ScrollView无法正确缩放

时间:2013-02-20 21:02:13

标签: ios uiscrollview uiimageview autolayout image-zoom

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

我使用了Apple的ScrollViewSuite(“1_TapToZoom”样本)中的逻辑和代码,一切看起来都是正确的。但是,在捏住视图时,ScrollView / ImageView会全部失真并且无法正确响应。难以解释这种行为,但我们只是称之为“时髦”。大小和方面没有一致的变化。

我的GUESS是这与自动布局约束有关。 有没有人对此有一些建议/解决方法?

1 个答案:

答案 0 :(得分:0)

出现的问题是在缩放过程中更改imageview的位置。在缩放过程中,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;
}