Iphone UIScrollView作为UIViewController';s视图和设置背景图像

Iphone UIScrollView作为UIViewController';s视图和设置背景图像,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我有一个子类UIScrollView,我已经将它设置为UIViewController的视图。我希望在整个UIScrollView中滚动时能够看到一个全屏背景图像。我该怎么做?请不要告诉我将UIScrollView放在UIImageView前面。试图找到替代方案。现在我有一个UIImageView作为UIScrollView的子视图,但是当我向下滚动到底部时,图像不再显示。在ViewController的UIView中放置两个视图。第一个是带有所需背景图像的UIImageView,第二个是UIS

我有一个子类UIScrollView,我已经将它设置为UIViewController的视图。我希望在整个UIScrollView中滚动时能够看到一个全屏背景图像。我该怎么做?请不要告诉我将UIScrollView放在UIImageView前面。试图找到替代方案。现在我有一个UIImageView作为UIScrollView的子视图,但是当我向下滚动到底部时,图像不再显示。

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

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

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

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

  • UIViewController
    • 根视图
      • 图像视图
      • 滚动视图
现在,视图已正确分层,以保持图像静止,并在其上方滚动视图


希望这有帮助

您可以通过以下方式创建层次结构以保存额外视图

  • 视图控制器

    • 视图(图像视图)

      • 滚动视图

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

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

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

为什么不希望滚动视图位于图像视图前面?这正是我要做的。因为正如我所说,我的UIScrollView是UIViewController的UIView…我会使用普通UIView作为视图控制器的视图,然后在其中嵌入UIImageView和UIScrollView。你想要后面的图像视图。只需将它们都设置为第三个普通UIView的子视图,即UIViewController的视图。是的,但这将在不需要时使用CPU,并且您必须编写/运行此代码。我推荐另一种解决方案。这个答案是基于用户的需求,不一定是我个人的建议。