这个表达式“superview 边界的最小 x 值”在 Apple Documentation 中是什么意思?关于 UIScrollView
中的自动布局?
...some notes regarding Auto Layout support for UIScrollView:
In general, Auto Layout considers the top, left, bottom, and right edges of a view to be the visible edges. That is, if you pin a view to the left edge of its superview, you’re really pinning it to the minimum x-value of the superview’s bounds. Changing the bounds origin of the superview does not change the position of the view.
The UIScrollView class scrolls its content by changing the origin of its bounds. To make this work with Auto Layout, the top, left, bottom, and right edges within a scroll view now mean the edges of its content view.
1) 据我所知,默认情况下 View 的 bounds 是 (0, 0, width, height)。所以 x 是 0。
2) 一个 View 怎么可能有 更多 x 值以使其最小化?
任何 View 的自动布局约束通常与 View 的 可见 边界有关,但是当涉及到 UIScrollView
时,自动布局约束与 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 文档的含义:
The UIScrollView class scrolls its content by changing the origin of its bounds.
现在...
如果自动布局与 UIScrollView
的可见边界有关,那么无论您滚动多少,UILabel
都不会向上滚动。
但是……
由于 UIScrollView
中的 Autolayout 与 scrollView 的 contentSize
相关,因此 Autolayout 约束在其中与滚动功能相关。
所以...
当您在 scrollView
中为 subViews
使用 Autolayout 时,它将与 scrollView
的实际大小而不是可见大小有关。
关于ios - super View 边界的最小 x 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20298678/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |