我正在编写一个iOS 7应用程序,我有一个带有标签的矩形。标签与中心对齐,并且与视图的大小相同(为了简化增加大小)。
单击时,所需的效果是将视图设置为完整大小,标签始终保持居中。
我目前已经尝试过:
这些都不会产生所需的输出。每次标签看起来只是在视图开始动画之前捕捉到它的最终大小。
这是我的代码:
_viewHeightConstraint.constant = self.view.frame.size.height;
_viewWidthConstraint.constant = self.view.frame.size.width;
_viewTopConstraint.constant = 0;
_viewLeftConstraint.constant = 0;
_labelWidthConstraint.constant = self.view.frame.size.width;
_labelHeightConstraint.constant = self.view.frame.size.height;
[self.view needsUpdateConstraints];
[UIView animateWithDuration:1.5f
animations:^(void) {
[self.myView layoutIfNeeded]; //perform relayout of view containing label before relayout of entire view
[self.view layoutIfNeeded];
}];
我不确定我是否提供了必要的一切,因为我还不熟悉autolayout。但是,所需的效果是在中心的标签保持居中时动画为全尺寸的视图。
答案 0 :(得分:0)
将这些约束添加到您的标签:
(UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin)
答案 1 :(得分:0)
为什么要调用needsUpdateConstraints?
所有变化都发生在那里。请致电:
...
_labelWidthConstraint.constant = self.view.frame.size.width;
_labelHeightConstraint.constant = self.view.frame.size.height;
[UIView animateWithDuration:1.5f
animations:^(void) {
[self.view layoutIfNeeded];
}];
另外,为什么要在标签上设置高度和宽度限制?您可以添加中心水平和垂直约束。我不认为你可以为标签设置垂直文本对齐方式。但那不是你最初的问题。