如果标签为空/故事板,则使UILabel高度为零

use*_*273 6 objective-c storyboard uilabel ios

我为联系信息屏幕堆叠了很多标签.如果任何标签都是空的,我很乐意将它们的高度归零并让它们不占空间以避免屏幕上出现空白空间.但是,我在故事板中创建了屏幕,标签已分配高度和y值.

这是我一直试图用来改变标签高度但无法使其工作的代码.也许它只适用于以编程方式创建的标签,而故事板设置会覆盖我在这里所做的事情.

NSString *string = @"some text"; 
CGSize maximumLabelSize = CGSizeMake(280,1000);
 
// use font information from the UILabel to calculate the size
CGSize expectedLabelSize = [string sizeWithFont:myLabel.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping];
 
// create a frame that is filled with the UILabel frame data
CGRect newFrame = myLabel.frame;

// resizing the frame to calculated size
newFrame.size.height = expectedLabelSize.height;

// put calculated frame into UILabel frame
myLabel.frame = newFrame;
Run Code Online (Sandbox Code Playgroud)

有没有办法让故事板中创建的标签的高度为零,如果它们是空的?

chi*_*dro 0

您可以覆盖包含标签的视图的以下方法并执行类似的操作:

-(void) layoutSubviews {
    myLabel.frame = CGRectZero;
}
Run Code Online (Sandbox Code Playgroud)

此方法是为了允许布局子视图或您的视图。现在我不知道您是否使用约束来定义标签的高度。如果是这样,您应该以同样的方式更改标签的高度。请注意我在上面的示例中使用的CGRectZero.