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

时间:2016-01-04 13:17:01

标签: ios objective-c storyboard uilabel

我为联系信息屏幕堆叠了很多标签。如果任何标签都是空的,我很乐意将它们的高度归零并让它们占据空间以避免屏幕上出现空白空间。但是,我在故事板中创建了屏幕,标签已分配高度和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;

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

2 个答案:

答案 0 :(得分:0)

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

-(void) layoutSubviews {
    myLabel.frame = CGRectZero;
}

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

答案 1 :(得分:0)

首先使用autolayout。以下链接中的答案可能会有所帮助。 \b word boundaries