以编程方式从View中删除具有自动布局的UILabel

时间:2015-05-22 14:00:42

标签: objective-c uilabel

我解析Json数据并将其设置在一些UILabel上,我想要的是当没有特定标签的文本时必须从UIView中删除,我尝试了2种方法但没有结果,因为标签有限制。 我试过的是:

将其帧设置为0,将高度约束设置为0

CGRect noFrame = _prepTime.frame;

noFrame.size.width = 0;
noFrame.size.height = 0;
[_prepTime setFrame:noFrame];
prepTimeHeight = 0;

但是UILabel的高度仍然存在,

我试过:

[_prepTime removeFromSuperView];

有了这个,UILabel被删除了,但界面发生变化,因为它有约束,删除UILabel我会破坏布局。

是否有任何方法可以从视图中删除UILabel,即使它有约束条件?

2 个答案:

答案 0 :(得分:2)

如果您不想影响所有其他子视图,可以设置hidden

答案 1 :(得分:0)

使用布局约束时,编辑元素的框架不是一个好主意。相反,您应为IBOutlet property添加NSLayoutConstraint并将其链接到故事板中标签的高度限制,然后编辑NSLayoutConstraint的常量值。

在你的viewcontroller中@implementation

@property IBoutlet NSLayoutConstraint *myLabelHeightConstraint;

以及稍后要隐藏标签时:

self.myLabelHeightConstraint.constant = 0;
[self.view layoutIfNeeded];