如何使用自动布局在控制器中移动 UIView
How to move UIViews in a controller using autolayout
我正在将应用更新到 iOS7/8,并应用自动版式功能。
在我的 UIViewController
中,我有一些 UIViews
的位置应该随着 UIScrollView
更新其 contentOffset
.
而修改
当我更新 UIView's
框架(旧方法)时,由于控制器自动布局约束,我遇到了一些故障和错误(我使用 VFL 以编程方式设置约束,我没有故事板) .
所以问题是:在实现自动布局的控制器中移动 UIViews
的 right/best 方法是什么?
也许更新约束?我应该使用 Core Animation 来做任何 UIView
移动吗?
提前致谢!
self.yourView.translatesAutoresizingMaskIntoConstraints = YES;
然后只需更改框架:
CGRect rect = self.yourView.frame;
// move or change size
rect.origin.x = whatever...
self.yourView.frame = rect.
如果您在情节提要中设置了约束,则可以为需要更新的任何约束设置一个出口(就像您为任何视图所做的那样)。
完成后,您可以根据需要更新约束常量 属性。
[self layoutIfNeeded];
topConstraint.constant += 200;
[UIView animateWithDuration:0.3 animations:^{
[self layoutIfNeeded];
}];
在上面的代码中,我正在更新视图的 topConstraint 并为更改设置动画。需要在修改约束之前调用一次[self layoutIfNeeded];
,然后在动画块中调用一次。
我正在将应用更新到 iOS7/8,并应用自动版式功能。
在我的 UIViewController
中,我有一些 UIViews
的位置应该随着 UIScrollView
更新其 contentOffset
.
当我更新 UIView's
框架(旧方法)时,由于控制器自动布局约束,我遇到了一些故障和错误(我使用 VFL 以编程方式设置约束,我没有故事板) .
所以问题是:在实现自动布局的控制器中移动 UIViews
的 right/best 方法是什么?
也许更新约束?我应该使用 Core Animation 来做任何 UIView
移动吗?
提前致谢!
self.yourView.translatesAutoresizingMaskIntoConstraints = YES;
然后只需更改框架:
CGRect rect = self.yourView.frame;
// move or change size
rect.origin.x = whatever...
self.yourView.frame = rect.
如果您在情节提要中设置了约束,则可以为需要更新的任何约束设置一个出口(就像您为任何视图所做的那样)。 完成后,您可以根据需要更新约束常量 属性。
[self layoutIfNeeded];
topConstraint.constant += 200;
[UIView animateWithDuration:0.3 animations:^{
[self layoutIfNeeded];
}];
在上面的代码中,我正在更新视图的 topConstraint 并为更改设置动画。需要在修改约束之前调用一次[self layoutIfNeeded];
,然后在动画块中调用一次。