【问题标题】:Add UI elements to UIScrollView?向 UIScrollView 添加 UI 元素?
【发布时间】:2014-02-04 18:14:50
【问题描述】:

我有一个滚动视图。在滚动视图上,我添加了许多必要的 UILabel 和 UIButtons 等。

现在我想添加 MORE 标签和按钮,但是我在视图的界面上没有空间添加它们,否则它们会与其他元素重叠。如何添加更多 UI 元素,以便在用户滚动时与它们进行交互?我在想如果我将 UIelement 放在滚动视图的底部,滚动会“向下滚动”并为我提供更多空间。

【问题讨论】:

  • 你可以在 .xib 文件中设计一个包含所有这些内容的 UIView,并使视图成为你想要的任何大小,然后将其放入 viewDidLoad 中的滚动视图中。
  • 阅读此section of my book 可能会有所帮助,尤其是。该部分的后半部分(在 nib 编辑器中设计滚动视图的内容)。

标签: ios objective-c uiview uiscrollview storyboard


【解决方案1】:

这里的关键是要记住,视图控制器在 nib(.xib 文件或故事板)中的主视图在放入界面时总是会调整大小。您在 nib 编辑器(界面生成器)中看到的大小只是一个“服务建议”。因此,SamirChen 的回答非常正确:将视图设置为 Freeform 以便您可以调整大小,并使其足够大以容纳本身足够大的滚动视图,以便您可以放入所有所需的内容。

我只想补充两点,你会觉得有帮助:

  • 在滚动视图之外使用自动布局。当视图调整大小以适应界面时,这将导致滚动视图变为正确的大小,并将导致其他所有内容都正确重新定位。

  • 在滚动视图中也使用自动布局!这是非常酷的部分。如果您在滚动视图的所有内容和滚动视图本身(它们的父视图)之间设置了足够的约束,则contentSize 将使用由内而外的约束自动为您计算!因此,您不必知道内容大小或在代码中设置它!

看比描述更容易,所以下载example code from my book 并查看当前名为“bk2ch07p367scrollViewInNibAutolayout”和“bk2ch07p367scrollViewInNibAutolayout2”的示例。

【讨论】:

  • 你可以在线阅读iOS 6版本,但要获取的是iOS 7版本。
【解决方案2】:

据我所知,在 Interface Builder 中,您无法滚动 Scrollview。 如果您只想在 Interface Builder 中的滚动视图中添加更多标签和按钮,您可以在 Attribute Inspector 中将保存滚动视图的视图控制器的大小设置为 Freeform。然后你可以在Size Inspector 中将视图的大小设置为你想要的任何值。之后,您可以更改滚动视图的大小以添加更多标签和按钮。

【讨论】:

  • 这是一种常见的做法吗?好像没有
  • @CescSergey 如果您是“iOS 设计新手”,您怎么知道常见做法?这实际上是相当标准的。
  • 我不知道,直觉?,我应该能够从滚动视图设置滚动视图,而不是保存它的视图控制器?
【解决方案3】:

“您可以在 .xib 文件中设计一个包含所有这些内容的 UIView,并使视图成为您想要的任何大小,然后将其放入 viewDidLoad 中的滚动视图”,引用自 @nhgrif。

不要忘记更改滚动视图的 contentSize 属性以满足 UIView 的边界。

【讨论】:

  • @CescSergey 据我所知,IB中没有设置UIScrollViewcontentSize的地方。
  • 所以每次我将UIelement 添加为subview 时,我必须调用= self.view.bounds 还是可以在viewdidload 末尾调用一次?
  • @CescSergey 您添加 ui 元素的 UIView 不是 UIViewController 的 view 属性。您应该在 IB 中创建另一个 UIView,并使用 UIView * view = (UIView *)[[[NSBundle mainBundle] loadNibNamed:@"YourNibName" owner:(nib owner) options:nil] objectAtIndex:0]; 方法加载它。然后将scrollView.contentSize 分配给view.bounds.size
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 2015-01-29
  • 2020-04-20
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多