【问题标题】:UIScrollView as UIViewController's view and setting up background imageUIScrollView 作为 UIViewController 的视图并设置背景图片
【发布时间】:2012-06-08 01:13:27
【问题描述】:

我有一个 UIScrollView 的子类,我已将它设置为我的 UIViewController 的视图。我想要一个全屏背景图像,当我滚动整个 UIScrollView 时,我总是可以看到它。我怎样才能做到这一点?请不要告诉我在 UIImageView 前面有 UIScrollView。试图找到替代方案。现在我有一个 UIImageView 作为 UIScrollView 的子视图,但是当我向下滚动到底部时,图像不再显示。

【问题讨论】:

  • 为什么不希望滚动视图位于图像视图前面?我就是这样做的。
  • 因为正如我所说,我将 UIScrollView 作为 UIViewController 的 UIView...
  • 我会使用普通的 UIView 作为视图控制器的视图,然后在其中嵌入 UIImageView 和 UIScrollView。
  • 你想要后面的图像视图。只需让它们成为第三个普通 UIView 的子视图,即 UIViewController 的视图。

标签: iphone objective-c ios ipad


【解决方案1】:

您可以通过以下方式创建层次结构以节省额外的视图。

  • 视图控制器

    • 查看(图像查看)

      • 滚动视图

【讨论】:

    【解决方案2】:

    覆盖 UIScrollView 子类中的布局子视图:

    - (void)layoutSubviews
    {
        CGRect frame = self.imageView.frame;
        frame.origin.y = self.contentOffset.y;
        self.imageView.frame = frame;
    }
    

    如果需要,也可以对 x 进行调整。

    【讨论】:

    • 是的,但是当你不需要时这会使用 CPU,你必须编写/运行这段代码。我推荐其他解决方案之一。
    • 这个回答是根据用户的要求,不一定是我个人的推荐。
    【解决方案3】:

    在 ViewController 的 UIView 中放置两个视图。第一个是带有您想要的背景图像的 UIImageView,第二个是 UIScrollView(具有清晰的背景颜色,因此您可以通过滚动视图看到 UIImageView 的内容(即背景图像))。在故事板或 IB 中,它的结构如下:

    • 视图控制器
      • 查看
        • 图像视图
        • 滚动视图

    【讨论】:

      【解决方案4】:

      将 UIScrollView 从控制器的主视图中移除。

      相反,使用 UIView 并将 imageView 添加到视图的顶部,并在其上方添加滚动视图。您的布局应如下所示:

      • UIViewController
        • 根视图
          • 图像视图
          • 滚动视图

      现在您的视图已正确分层以保持图像静态和其上方的滚动视图

      希望这会有所帮助!

      【讨论】:

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