【问题标题】:Why won't basic UIScrollView with a few buttons scroll?为什么带有几个按钮的基本 UIScrollView 不会滚动?
【发布时间】:2011-07-28 04:29:23
【问题描述】:

为什么带有几个按钮的基本 UIScrollView 不能滚动?

所以我所做的就是:

  • 创建基于视图的 iPhone 应用程序
  • 将 UIScrollView 拖入主控制器的 xib 文件中
  • 滚动视图现在作为 IB 中 View 的子视图
  • 在 IB 中,scrollview 将其视图高度增加到 1000
  • 向滚动视图添加一些按钮(因此它们显示为滚动视图的子视图)
  • 还创建了实例变量,以及属性 IBOutlet,合成
  • 在 IB 中将 File Owner scrollView 出口链接到滚动视图
  • 检查以确保 IB 中的滚动视图已勾选“启用滚动”属性

但毕竟在 iPhone 模拟器中它不会让我滚动视图?

【问题讨论】:

    标签: iphone ios interface-builder uiscrollview


    【解决方案1】:

    您还需要做一件事:将滚动视图上的contentSize 属性设置为适当的值:

    [scrollView setContentSize:CGSizeMake(
       scrollView.bounds.size.width,
       CGRectGetMaxY(bottommostSubview.frame)
    )];
    

    bottommostSubview 是一个连接到最靠近底部的滚动视图的子视图的插座。你也可以编写一个方法来自动找到这个视图,或者如果你知道大小永远不会改变,就硬编码一个值。

    默认的contentSizeCGSizeZero,它有效地禁用了滚动。

    【讨论】:

    • 感谢 Todd - 我尝试输入“[self.scrollView setContentSize:CGSizeMake(400, 1000)];”,虽然这让我看到了左右视图的一些滚动,但仍有无法向上/向下滚动?这里有什么想法吗?
    • 正如 ryyst 所说,确保你的滚动视图的框架不是 1000 点高——它应该是正常的 460,IB 中的默认值。
    • 实际上我刚刚回去并将 IB 中的 scrollView 视图高度从 1000 更改回 480,现在向上/向下滚动似乎可以工作了!不完全确定为什么会修复它....
    • 那是因为滚动视图的框架只决定了内容将在其中绘制的区域,而不是将滚动的区域。将滚动视图的框架视为查看实际内容的窗口大小(其大小由contentSize 确定)。希望这是有道理的。
    【解决方案2】:

    您可能不想将滚动视图 frame.size.height 属性更改为 1000.0,但您的滚动视图 contentSize.height

    【讨论】:

    • 哦 - 那么这个参数在 IB 中不可用?您需要以编程方式执行此操作吗?
    • @Greg:我相信UIScrollView 会自动确定其内容大小(我想它会在您添加或删除子视图时设置内容大小)。如果 IB 中没有参数,通过程序设置,应该没什么大不了的。
    【解决方案3】:

    不,正确答案是:

    - (void)viewDidLayoutSubviews {
        [super viewDidLayoutSubviews];
        [self.scrollView setContentSize:CGSizeMake(320, 1700)];  
    }
    

    我在下一个链接上建立的原始答案:

    UIScrollView won't scroll (Storyboards) -> Find Evana's answer

    我浪费了很多时间尝试实现滚动(并且反复)。我什至使用了 2 个视图(第一个中的 UIScrollView 和 UIView)

    没必要!

    关键是:viewDidLayoutSubviews

    在情节提要中,您将 UIScrollView 实现为任何其他元素,

    但关键是 viewDidLayoutSubviews

    方法中的 setContentSize

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2020-12-07
      • 2011-09-17
      相关资源
      最近更新 更多