这个表达式“超级视图边界的最小x值”在Apple Documentation中对于UIScrollView
中的Autolayout是什么意思?
...关于UIScrollView的自动布局支持的一些注意事项:
通常,“自动布局”会将视图的顶部,左侧,底部和右侧边缘视为可见边缘。也就是说,如果您将视图固定到 它的超级视图的左边缘,你真的把它钉在了它上面 superview边界的最小x值。更改边界原点 超视图的位置不会改变视图的位置。
UIScrollView类通过更改其边界的原点来滚动其内容。要使用Auto Layout,左上角, 滚动视图中的底部和右边缘现在表示其边缘 内容视图。
1)据我所知,默认情况下界限是(0,0,宽度,高度)。所以x 0 。
2)视图如何将更多 x值设置为最小值?
答案 0 :(得分:1)
任何视图的Autolayout约束通常与视图的 可见 边界有关,但当涉及UIScrollView
时,Autolayout约束是与scrollView的contentView
相关
显然,因为scrollView
是......应该滚动。
假设scrollView
有contentSize
之类的内容:
myScrollView.frame = CGRectMake(0, 0, 100, 100);
myScrollView.contentSize = CGSizeMake(1000, 1000);
现在...
比如说,在这个scrollView
中你有一个subView
,类似于:
UILabel *lblTest = [UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[lblTest setText:@"Where am I?"];
[myScrollView addSubView:lblTest];
滚动前:
myScrollView.contentOffset.y
将为0
myScrollView.bounds.y
将为0
myScrollView.frame.origin.y
将为0
lblTest.frame.origin.y
将为0
(并且可见)滚动后(到底部):
myScrollView.contentOffset.y
将更改为900
myScrollView.bounds.y
也为900
myScrollView.frame.origin.y
仍然为0
lblTest.frame.origin.y
将为-900
(且不再可见)Apple文档的含义是:
UIScrollView类通过更改原点来滚动其内容 它的界限。
现在...
如果Autolayout与UIScrollView
的可见范围有关,那么无论您滚动多少,UILabel
都不会向上滚动。
但是...
由于UIScrollView
中的Autolayout与scrollView的contentSize
有关,因此Autolayout将其与滚动功能相关联。
于是......
当您在subViews
中对scrollView
使用Autolayout时,它将与scrollView
的实际大小相关,而不是可见大小。
答案 1 :(得分:0)
apple docs问:UIScrollView类通过更改其边界的原点来滚动其内容。
1)所以滚动可以改变bounds.x,而 x将不是0 bounds属性通常(0,0,宽度,高度),但不总是
2)最小值意味着:滚动视图中的顶部,左侧,底部和右侧边缘现在表示其内容视图的边缘。