【问题标题】:Setting UIScrollView Width设置 UIScrollView 宽度
【发布时间】:2016-08-15 11:13:05
【问题描述】:

我有一个 UIScrollView 添加到我的 ViewController。以及该滚动视图之上的视图。我做了以下事情:

  1. 将滚动视图放置在我的原始视图中并设置顶部、左侧、右侧和底部约束。取消选中限制到边距。

  2. 在滚动视图中添加了一个 UIView(用于保存我的标签等),并添加了顶部、左侧、右侧和底部约束,未选中约束到边距。并将宽度设置为原始视图

  3. 然后,我添加一个图像视图和三个放置在滚动视图中的视图内的标签。并为它们添加顶部、左侧、右侧、底部和高度约束。

滚动视图有效,我的视图确实滚动,我的标签和图像视图居中,但一切都很宽。

我想知道我是怎么做到的,所以视图不宽,我不能水平滚动,只能垂直滚动。

【问题讨论】:

    标签: ios swift uiscrollview


    【解决方案1】:

    简而言之,使用自动布局时,contentsize 不起作用。
    如果你想让scrollview可以滚动,你应该在scrollview中添加一个容器并将原始子视图添加到容器中。

    例如,使用 snapkit(这里可能有些错别字):

    1. 你有一个滚动视图。通过自动布局设置它等于 self.view 的框架
    2. [import] 然后你添加一个 containerView 作为滚动视图的子视图。设置约束:

       make.edges.equalTo(scrollview) // mean its frame equal to scrollview
       make.width.equalTo(self.view)  // set width equal to self.view
       make.height.equalTo(yourheight).priorityLow()  // the actual height,if no changes,you can ingore .priorityLow()
      
    3. 将你的sunviews添加到containerView,添加约束必须设置为containerView,不能设置为scrollview的。例如,:

      containerView.addSubView(myview)
      myview.snp_makeConstraints { (make) -> Void in
          make.left.equalTo(self.containerView)
          make.top.equalTo(self.containerView)
          make.right.equalTo(self.containerView)
          make.height.equalTo(267)
      }
      

    阅读这个官方文档 - Technical Note TN2154 UIScrollView And Autolayout.

    【讨论】:

    • 好吧,我想我跟着你了。我会阅读您提供的文档,但基本上在滚动视图中设置内容大小无效?
    • @m1234 是的,如果你使用 autolayout.its 没有效果
    【解决方案2】:

    我最近才发现这一点。尝试这样做:

    1. 制作滚动视图
    2. 将所有标签和按钮放入堆栈视图(如果您不了解堆栈视图,请查看:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/
    3. 限制堆栈视图的宽度并确保对齐和分布设置为填充

    1. 将堆栈视图放在滚动视图中
    2. 将滚动视图限制在您心中的愿望

    将标签和您想要的内容放在滚动视图中应该有助于宽度边界。这是我成功滚动视图的图片。希望这会有所帮助:)

    【讨论】:

    • 另外,如果要水平滚动,请将滚动视图设置为水平,堆栈视图也设置为水平:)
    【解决方案3】:

    在滚动视图内的视图和视图控制器的根级视图之间添加等宽约束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多