【问题标题】:iOS 6 Autolayout - ScrollView with embedded ImageView not zooming properlyiOS 6 Autolayout - 带有嵌入式 ImageView 的 ScrollView 无法正确缩放
【发布时间】:2013-02-06 01:02:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios uiscrollview uiimageview autolayout zooming


    【解决方案1】:

    出现的问题是在缩放过程中图像视图的位置发生变化。在缩放过程中,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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多