【发布时间】:2014-12-11 21:19:34
【问题描述】:
我有一个名为 containerView 的 UIView。
我将此作为子视图添加到控制器视图的根视图中。我以编程方式为其添加了一些约束(我将其居中并使宽度与父视图的宽度相差几个点)。
我在containerView 中添加了一些UILabels 作为子视图。 UILabels 的高度决定了containerView 的高度。
当用户点击屏幕时,containerView 会从CGRectOffset() 向上移动,一旦动画完成,它就会移回原来的位置。
CGPoint absolutePoint = self.containterView.frame.origin;
self.containerYConstraint.constant = -absolutePoint;
[UIView
animateWithDuration:0.5
animations:^
{
[viewForUpdate setNeedsUpdateConstraints];
}
completion:^(BOOL finished)
{
self.containerYConstraint.constant = 0;
[viewForUpdate setNeedsUpdateConstraints];
[self.containerView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; // Remove all subviews
}];
我需要删除作为子视图放入的UILabels,并用不同的标签替换它们。但是,当我删除 UILabel 中的一个时,整个containerView 就消失了(我将背景设置为红色,这样我就可以看到它了)。我删除了示例中的所有子视图,但是当我尝试仅删除一个时,会出现相同的效果。
为什么会发生这种情况?这与自动布局有关吗?另外,如果我想在删除其中一个 UILabel 后将其重新定位,我该如何重新进行约束?
【问题讨论】:
-
检查容器约束是否设置正确
标签: ios objective-c iphone uiview uilabel