2013-06-12 19 views
1

我知道隐藏UILabel的两种方式。我可以将alpha设置为0,或将标签属性'hidden'设置为YES。那就是隐藏UILabel而不消耗任何空间

// UILabel *label = ... 
label.alpha = 0.0f; 

// or 
label.hidden = YES; 

但是在这两种情况下,标签都会占用空间(宽度和高度)。

是否可以隐藏标签,使其不会占用任何垂直/水平空间?我想一个可能的方法是将宽度/高度设置为0。但也许有更好的办法。

+0

你是指占用空间的是什么?如果它隐藏,那么你看不到它,因此它不占用任何空间。如果你完全想要它的屏幕,但我想你可以将它移动到屏幕边界之外。 – Groot

+1

那你为什么不用'[label removeFromSuperview];'? –

+0

@Filip是的,你不能看到它,但后来的内容不会向上移动。在我看来,这看起来像是一个缺口。 – kukudas

回答

1

那么您可以将帧高度值设置为0来隐藏标签[使用自动布局?这可能是不够的,如果你把它正确]

没有自动布局,移动下方向上的内容,它依赖于编程设定的内容的框架之下,以新的帧[更改所有组件y valueyvalue-label.height]

2

我只是有这个问题,并发现你必须设置文本为空字符串,以使其不占用空间。 (iOS 9)

label.text = @""; 
label.hidden = YES; 

iOS有这么多的错误。

2

处理此问题的最简单方法是使用堆栈视图。将标签嵌入到堆栈视图中,堆栈视图将在内部处理间距。像对齐,间距等其他属性可以根据需要调整。请确保您重新建立堆栈视图和相邻元素之间的约束,因为一旦视图添加到堆栈视图中,如果其约束被清除,所有视图都会被删除