如何使用自动布局在控制器中移动UIView
问题描述:
我正在将应用更新到iOS7/8,并应用自动布局功能。 在我的UIViewController
我有几个UIViews
的位置应该修改为UIScrollView
更新其contentOffset
。如何使用自动布局在控制器中移动UIView
当我更新UIView's
框架(旧方式)时,由于控制器自动布局约束(我使用VFL以编程方式设置约束条件,我没有故事板),因此出现一些故障和错误。
所以问题是:哪个是在实现Autolayout的控制器中移动UIViews
的最佳方法? 也许更新约束?我应该使用Core Animation来制作任何UIView
吗?
在此先感谢!
答
如果你有约束建立情节板中的任何约束,你需要更新(就像你做,你可以设置一个出口任何视图)。 一旦你这样做,你可以根据需要更新约束常量属性。
[self layoutIfNeeded];
topConstraint.constant += 200;
[UIView animateWithDuration:0.3 animations:^{
[self layoutIfNeeded];
}];
在上面的代码中,我正在更新视图的topConstraint并为更改设置动画效果。在约束被修改之前,您需要调用[self layoutIfNeeded];
一次,并再次在动画块中调用。
答
self.yourView.translatesAutoresizingMaskIntoConstraints = YES;
然后只是改变了框架:
CGRect rect = self.yourView.frame;
// move or change size
rect.origin.x = whatever...
self.yourView.frame = rect.
如果我使用视觉格式语言来设置约束条件,该怎么办? (我没有故事板)。 – 2015-04-06 09:22:38
VFL有些困难,您应该尝试对需要更新的约束使用'+ constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:'。 – marosoaie 2015-04-06 09:29:20
'+ constraintsWithVisualFormat:options:metrics:views:'返回一个约束数组,你必须通过循环来找到你需要的然后保存它,这不是一个好主意 – marosoaie 2015-04-06 09:30:51