如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?

Posted

技术标签:

【中文标题】如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?【英文标题】:How do I resize a UIScrollView so that it's not 100% of the parent UIView? 【发布时间】:2011-03-10 13:01:02 【问题描述】:

我使用 UITabBar 模板构建了一个应用程序。我有几个标签栏项目,一个项目显示一个视图。该视图有一个 UIScrollView 元素,该元素启用了分页以模仿 iPhone 跳板的行为,即可以从左到右滚动的页面。

我正在尝试放入 UIPageControl,因此我调整了 UIScrollView 的大小,使其比父 UIView 的高度略短,并在其下方放置了一个 UIPageControl。

当我运行应用程序时,UIScrollView 始终是父 UIView 高度的 100%,我看不到 UIPageControl。

我在标签的视图控制器的 viewDidLoad 方法中有以下代码:

UIScrollView *tempScrollView=(UIScrollView *)self.view;
tempScrollView.contentSize=CGSizeMake(640,377);  

这可以设置内容大小,我可以从左到右滚动。我试过添加:

tempScrollView.frame=CGRectMake(0, 0, 640, 377);

调整滚动视图的大小,但仍显示 100%。请参见下图显示问题:

【问题讨论】:

【参考方案1】:

我认为您不应该将帧大小调整为 640、377,因为一旦 contentSize 与帧大小相同,它会使分页停止工作。

一种解决方案是在界面构建器中设置所需的帧大小(如最左边的图)并设置适当的自动调整大小的掩码。我猜你要找的是下面的配置

要检查更改是否有效,我会使用高度明显较小的 uiscrollview,以确保行为符合预期。

【讨论】:

我在视觉上将 UIScrollView 的大小调整为父视图高度的三分之二。我已将滚动视图的背景设置为红色。我还按照您的建议设置了自动调整大小选项,但是当我运行应用程序并切换到该选项卡时,UIScrollView 仍会填充整个视图。 UITabBar 是否以某种方式操纵我的视图? 如果视图没有被某些代码指令调整大小,我没有任何其他假设。尝试禁用 superview 的 autosize subviews 属性。【参考方案2】:

如果您希望视图滚动,您需要将tempScrollView.contentSize 更改为大于tempScrollView.frame

如果你这样做:

CGFloat contentWidth = tempScrollView.frame.size.width*2;
tempScrollView.contentSize=CGSizeMake(contentWidth,377);

您将有 2 页。

您还需要激活分页:

[tempScrollView setPagingEnabled:TRUE];

【讨论】:

以上是关于如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?的主要内容,如果未能解决你的问题,请参考以下文章

如何调整UITextField文字内容位置,使其不贴边框显示

如何限制 HDF5 上 Pandas 查询的大小,使其不超过 RAM 限制?

如何隐藏 HTML 表格行 <tr> 使其不占用空间?

Libgdx - 如何加载一个巨大的精灵表,使其不呈现黑色?

如何动态调整 UIScrollView 的大小?

如何调整 UIScrollView 的大小以适合子 UITextViews 的内容