【问题标题】:Fixed / Float view in UIScrollView with AutoLayout固定/浮动视图在 UIScrollView 与 AutoLayout
【发布时间】:2013-10-09 20:33:12
【问题描述】:

this technical Note Apple 声明您可以通过向 UISCrollView 的超级视图添加约束来使 UIScrollView 的子视图固定/浮动。我试过了,但我做错了,我不知道是什么问题。

请注意,您可以通过在视图和滚动视图的子树之外的视图(例如滚动视图的超级视图)之间创建约束,使滚动视图的子视图看起来浮动(不滚动)在其他滚动内容之上。

这就是我所做的。我已经设置了 UIScrollView 并尝试将固定视图添加到滚动视图的顶部,如下所示:

_testOverlay = [[UIView alloc] init];
_testOverlay.backgroundColor = [UIColor blueColor];
_testOverlay.translatesAutoresizingMaskIntoConstraints = NO;
[self.scrollView addSubview:_testOverlay];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_testOverlay]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testOverlay)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_testOverlay(64)]-(>=0)-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_testOverlay)]];

但是,这不起作用,添加的视图将与滚动视图一起移动并且不会“浮动”。有什么想法吗?

【问题讨论】:

    标签: ios uiscrollview header autolayout


    【解决方案1】:

    在视图和滚动视图子树之外的视图之间,例如 滚动视图的超级视图

    这部分很关键。 self.scrollView_testOverlay 的超级视图。因此,在@"|[_testOverlay]|" 中,竖线参考self.scrollView。您必须用_testOverlay 和(我想)self.view 之间的约束替换这个约束。我不确定视觉格式语言是否可行,但您当然可以使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant。它会是这样的(我不会发布整个代码,因为它很长):

    [self.view addConstraint:[NSLayoutConstraint
                              constraintWithItem:self.view
                              attribute:NSLayoutAttributeLeft
                              relatedBy:NSLayoutRelationEqual
                              toItem:_testOverlay
                              attribute:NSLayoutAttributeLeft
                              multiplier:1.0
                              constant:0]];
    

    【讨论】:

    • 成功了!我以为“|”调用的视觉格式语言超级视图是我添加约束的视图。谢谢!
    • 如果我的self.viewUITableView 并且没有超级视图,我该怎么做?
    【解决方案2】:

    将覆盖视图添加到滚动视图的超级视图,而不是滚动视图本身。

    [self.view addSubview:_testOverlay];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 2013-05-26
      • 2016-04-10
      • 1970-01-01
      相关资源
      最近更新 更多