自动布局和 UIScrollView
Posted
技术标签:
【中文标题】自动布局和 UIScrollView【英文标题】:Autolayout and UIScrollView 【发布时间】:2014-01-27 12:39:18 【问题描述】:所以我想摆脱代码中的所有“框架”并完全切换到自动布局。但是有一种情况,我希望视图的 Y 位置依赖于 UIScrollView
的 content offset
(bounds.origin.y
)。使用auto layout
的正确方法是什么?一个想法是每次更改scrollview content offset
时更新NSLayoutConstraint
的常量,(但是在这里使用自动布局有什么意义?)所以我希望有更好的方法来实现“纯” autolayout
.
我知道这里经常讨论“Autolayout
& UIScrollView
”,所以我想强调一下,我不想对UIScrollView
子视图使用自动布局,我有一个UIView
有2 个子视图;一个UIScrollView
和一个UIView
对象,我想使用自动布局来指定UIView
顶部坐标和UIScrollView
内容偏移量之间的关系。
【问题讨论】:
【参考方案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”约束 好的,很酷。是的,这正是你要做的。没有办法将约束和滚动视图的偏移量联系起来,因此实际上不可能以任何其他方式做到这一点。对不起。以上是关于自动布局和 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章