超视图边界的最小x值?

时间:2013-11-30 09:35:13

标签: ios uiscrollview autolayout

这个表达式“超级视图边界的最小x值”在Apple Documentation中对于UIScrollView中的Autolayout是什么意思?

  

...关于UIScrollView的自动布局支持的一些注意事项:

     
      
  • 通常,“自动布局”会将视图的顶部,左侧,底部和右侧边缘视为可见边缘。也就是说,如果您将视图固定到   它的超级视图的左边缘,你真的把它钉在了它上面   superview边界的最小x值。更改边界原点   超视图的位置不会改变视图的位置。

  •   
  • UIScrollView类通过更改其边界的原点来滚动其内容。要使用Auto Layout,左上角,   滚动视图中的底部和右边缘现在表示其边缘   内容视图。

  •   

1)据我所知,默认情况下界限是(0,0,宽度,高度)。所以x 0

2)视图如何将更多 x值设置为最小值?

2 个答案:

答案 0 :(得分:1)

任何视图的Autolayout约束通常与视图的 可见 边界有关,但当涉及UIScrollView时,Autolayout约束是与scrollView的contentView相关 显然,因为scrollView是......应该滚动。


假设scrollViewcontentSize之类的内容:

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)最小值意味着:滚动视图中的顶部,左侧,底部和右侧边缘现在表示其内容视图的边缘。