我正在尝试设置一个显示图像的简单视图,并允许用户根据需要放大/缩小图像。 我启用了autoLayout,视图由带有嵌入式UIImageView的UIScrollView组成。 两个视图都适合整个屏幕。
我使用了Apple的ScrollViewSuite(“1_TapToZoom”样本)中的逻辑和代码,一切看起来都是正确的。但是,在捏住视图时,ScrollView / ImageView会全部失真并且无法正确响应。难以解释这种行为,但我们只是称之为“时髦”。大小和方面没有一致的变化。
我的GUESS是这与自动布局约束有关。 有没有人对此有一些建议/解决方法?
答案 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;
}