2013-02-20 52 views
2

我试图设置一个显示图像的简单视图,并允许用户放大/缩小图像并按需要平移图像。 我启用了autoLayout,并且该视图由一个嵌入了UIImageView的UIScrollView组成。 这两个视图的大小均适合整个屏幕。iOS 6 Autolayout - 带嵌入式ImageView的ScrollView无法正常缩放

我使用了Apple的ScrollViewSuite(“1_TapToZoom”示例)的逻辑和代码,看起来一切正常。但是,捏视图时,ScrollView/ImageView将全部失真并且不能正确响应。很难解释这种行为,但让我们称之为“时髦”。大小和方面以不一致的方式变化。

我的GUESS是这与自动布局约束有关。 有没有人有这方面的建议/修复?

回答

0

发生的问题是在缩放过程中更改imageview的位置。在缩放过程中,imageview的原始位置将变为负值。我相信这就是生涩运动发生的原因。同样,在缩放完成后,imageView仍然位于错误的位置,这意味着滚动看起来会被抵消。

如果您在此期间实施了-(void) scrollViewDidZoom:(UIScrollView *)scrollView并记录了UIImageView的框架,则可以看到其原点更改。

我最终使事情通过实施这样的策略制定:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch20p573scrollViewAutoLayout/ch20p573scrollViewAutoLayout/ViewController.m

而且除了改变内容查看的框架,而放大

-(void) scrollViewDidZoom:(UIScrollView *)scrollView { 
    CGRect cFrame = self.contentView.frame; 
    cFrame.origin = CGPointZero; 
    self.contentView.frame = cFrame; 
}