gpt4 book ai didi

ios - ScrollView的contentOffset&contentInset到底是什么

转载 作者:IT王子 更新时间:2023-10-29 05:04:04 29 4
gpt4 key购买 nike

我有 2 个关于 ScrollView 的问题。一个是我的主要问题,另一个是次要的混淆。

1.ScrollViewcontentOffsetcontentInset到底是什么?我将在下面提供更多详细信息。

2.我创建了一个ScrollView,但是ScrollView好像不能向任何方向滚动,是偏移量的问题吗?还是插页?我将在下面提供更多详细信息。

问题 1 的详细信息:

有时 contentOffset 属性和 contentInset 属性似乎有很多不同,但是当我尝试实现与这两个属性相关的一些功能时,我感到困惑。我在这里做一个简单的说明。你能帮我弄清楚哪些部分是偏移的,哪些部分是插入的吗?

enter image description here

问题 2 的详细信息:

我使用下面的函数来添加一个ScrollView

 func addScrollView(){
// assign a new ScrollView to "scroll" class member
scroll = UIScrollView(frame: CGRectZero)
scroll!.translatesAutoresizingMaskIntoConstraints = false
// change it to gray color to help recognising
scroll!.backgroundColor = UIColor.grayColor()
self.view.addSubview(scroll!)

//add some constraints,[you can neglect following part]
let x = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
self.view.addConstraint(x)

let y = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1/2, constant: 25)
self.view.addConstraint(y)

let left = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.LeadingMargin, multiplier: 1, constant: 10)
self.view.addConstraint(left)

let upperSpacing = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 50)
self.view.addConstraint(upperSpacing)

let w = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.GreaterThanOrEqual, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: 10)
self.view.addConstraint(w)

let h = NSLayoutConstraint(item: scroll!, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: scroll!, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 0)
self.view.addConstraint(h)
print("add scroll view Successed")
}

而且它不能滚动。它只能包含很少的东西(按钮或文本字段...)来填充它的大小,而不是在我们看不到的地方放更多的东西。

那么设置 outset 和 inset 的问题是什么?我该如何设置来解决这个问题?如果我这样做,我如何以编程方式将东西(按钮..)添加到未显示的地方?

我希望你能告诉我一些事情!

最佳答案

一些观察:

  • contentOffset 是用户当前在 ScrollView 中滚动的位置。这显然会随着用户滚动而改变。您通常不会以编程方式更改此设置(除非您想以编程方式滚动某处,例如,有一个滚动到顶部的按钮)。

  • contentInset 是内容在 ScrollView 中视觉插入的程度(即 ScrollView 中的“边距”)。您通常在 IB 或 viewDidLoad 中设置一次,因为 ScrollView 已实例化。

  • contentSize 是可滚动内容的大小。请注意,使用自动布局,您不必手动指定它,而是根据您在 ScrollView 及其 subview 之间指定的约束(以及 subview 和 subview 之间的约束)来计算。

要使滚动正常工作,它是 (a) ScrollView 的 bounds 减去任何 contentInset 的组合;和 (b) contentSize,根据 subview 的约束为您计算。

关于ios - ScrollView的contentOffset&contentInset到底是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286574/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com