【问题标题】:Autolayout and UIScrollView自动布局和 UIScrollView
【发布时间】:2014-01-27 12:39:18
【问题描述】:

所以我想摆脱代码中的所有“框架”并完全切换到自动布局。但是有一种情况,我希望视图的 Y 位置依赖于 UIScrollViewcontent offset (bounds.origin.y)。使用auto layout 的正确方法是什么?一个想法是每次更改scrollview content offset 时更新NSLayoutConstraint 的常量,(但是在这里使用自动布局有什么意义?)所以我希望有更好的方法来实现“纯” autolayout.

我知道这里经常讨论“Autolayout & UIScrollView”,所以我想强调一下,我不想对UIScrollView 子视图使用自动布局,我有一个UIView 有2 个子视图;一个UIScrollView 和一个UIView 对象,我想使用自动布局来指定UIView 顶部坐标和UIScrollView 内容偏移量之间的关系。

【问题讨论】:

    标签: ios uiscrollview uikit autolayout


    【解决方案1】:

    好的,你可以很容易地做到这一点。这基本上就像您使用框架一样。

    首先,您需要创建“变量”约束并将其保存到属性中。

    您可以在代码中执行此操作...

    self.heightConstraint = [NSLayoutConstraint constraintWithItem:self.theView
    attribute:
    relatedBy:
    toItem:
    attribute:
    multiplier:
    constant:];
    // set up the rest
    
    [self.view addConstraint:self.heightConstraint];
    

    或者在 Interface Builder 中创建约束,然后按 ctrl 拖动到属性。 (与任何其他 IBOutlet 一样)。

    那么当scrollView滚动时...

    self.heightConstraint.constant = calculatedValueFromTheOffset;
    
    [self.view layoutIfNeeded];
    

    这将移动视图,就像您使用框架但使用自动布局约束一样。

    【讨论】:

    • 谢谢,这就是我在这里的意思“一个想法是每次滚动视图内容偏移量发生变化时更新 NSLayoutConstraint 的常量”。实际上,它不是“高度”约束,而是“顶部 y”约束
    • 好的,很酷。是的,这正是你要做的。没有办法将约束和滚动视图的偏移量联系起来,因此实际上不可能以任何其他方式做到这一点。对不起。
    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2015-11-30
    • 2012-09-16
    • 2012-12-19
    • 1970-01-01
    相关资源
    最近更新 更多