【问题标题】:minimum x-value of the superview’s bounds?超级视图边界的最小 x 值?
【发布时间】:2013-11-30 09:35:13
【问题描述】:

关于UIScrollView 中的自动布局,Apple Documentation 中的“superview 边界的最小 x 值”是什么意思?

...关于 UIScrollView 的自动布局支持的一些说明:

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

  • UIScrollView 类通过更改其边界的原点来滚动其内容。为了使这项工作与自动布局一起工作,顶部、左侧、 滚动视图中的底部和右边缘现在意味着其边缘 内容视图。

1) 据我所知,默认情况下视图的 bounds 是 (0, 0, width, height)。所以 x 是 0。

2) 一个视图怎么会有 更多 x 值以使其最小化?

【问题讨论】:

    标签: ios uiscrollview autolayout


    【解决方案1】:

    任何视图的自动布局约束通常与视图的 可见 边界有关,但是当涉及到 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 文档的含义:

    UIScrollView 类通过改变原点来滚动其内容 它的界限。

    现在...
    如果 Autolayout 与 UIScrollView 的可见边界相关,那么无论您滚动多少,UILabel 都不会向上滚动。
    但是...
    由于UIScrollView 中的自动布局与滚动视图的contentSize 相关,因此自动布局约束在其中与滚动功能相关。

    所以...
    当您在scrollView 中为subViews 使用自动布局时,它将与scrollView 的实际大小相关,而不是可见大小。

    【讨论】:

      【解决方案2】:

      apple docs 说 ask:UIScrollView 类通过更改其边界的原点来滚动其内容。

      1) 所以滚动可以改变 bounds.x,而 x 不会是 0 bounds 属性通常是(0、0、宽度、高度),但不总是

      2) 最小表示:滚动视图中的上、左、下和右边缘现在表示其内容视图的边缘。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        相关资源
        最近更新 更多