UIScrollView 被裁剪并且不使用 Autolayout 滚动

Posted

技术标签:

【中文标题】UIScrollView 被裁剪并且不使用 Autolayout 滚动【英文标题】:UIScrollView is clipped and does not scroll with Autolayout 【发布时间】:2014-03-06 16:25:23 【问题描述】:

我在我的应用程序中创建了一个自定义导航菜单,我想用滚动视图显示一些信息。

我有一个 mainViewController,顶部有一个自定义导航菜单和一个视图(占位符)。然后我创建了一个自定义 segue 和另外 3 个视图,对应于自定义菜单的 3 个选项卡。这些视图(viewA、viewB 和 viewC)更小以适合占位符,因此用户将看到顶部的自定义栏以及占位符中与 viewA(B 或 C)相对应的信息。这是我的 mainViewController 的架构。

在 viewA 中,我想在滚动视图中显示一些信息。这是我的架构:

但是 viewA 被剪裁了,它不会向下滚动。但是如果我让我的滚动视图更小,它会向下滚动。我猜这个问题与底部布局指南间距约束有关,因为我的视图位于占位符内部。我做错了什么?我想同时支持 iPhone 3.5 和 4 英寸的屏幕。

【问题讨论】:

【参考方案1】:

这听起来好像你没有设置你的滚动视图的 contentSize。

如果您的 scrollview.contentSize 框架比您的 scrollview 框架大,您的 scrollview 将不会滚动,因此您需要将您的 scrollview.contentSize 设置为比您的 scrollView 框架更大以进行滚动。

【讨论】:

我在 viewWillAppear 中添加了这个,它仍然无法滚动 [self.mainScrollView setContentSize:CGSizeMake(320, 2000)] 你不是在方法-(void)viewDidAppear:(BOOL)animated或者viewWillAppear之后执行的其他方法中改变滚动视图框架是吗?? 我不改变框架。我应该在哪里设置内容大小? 取决于您是否正在实施其他方法。但是,例如,如果您在 viewDidLoad 中执行某些操作,则没有任何问题,因为 -viewWillAppear 是在之后执行的。我会尝试设置你的 uiscrollview 的框架和 contentSize 之后,并在方法 -ViewDidAppear 例如检查大小和 contentSize,也许他们正在改变 我没有实现任何其他方法。我尝试设置框架和内容大小,结果是一样的。滚动视图不滚动。

以上是关于UIScrollView 被裁剪并且不使用 Autolayout 滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView中的drawRect裁剪

Objective-C:从 UIScrollView 获取缩放的裁剪图像

裁剪边界之外的 UIScrollview 子视图未接收到触摸

捕捉 UIScrollView 的可见部分后裁剪图像的透明部分

在 UIScrollView 问题中裁剪缩放图像

如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?