如何调整 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 限制?