【问题标题】:How do I resize a UIScrollView so that it's not 100% of the parent UIView?如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?
【发布时间】: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%。请参见下图显示问题:

【问题讨论】:

    标签: objective-c cocoa-touch ios4 uiscrollview


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2014-12-29
      相关资源
      最近更新 更多