2016-01-04 71 views
4

我爲聯繫信息屏幕堆疊了很多標籤。如果任何標籤都是空的,我希望將其高度調整爲零,並且不要佔用空間以避免屏幕上出現空白區域。但是,我已經在故事板中創建了屏幕,並且標籤被分配了高度和y值。如果標籤爲空/故事板,則使UILabel高度爲零

這裏是代碼我一直試圖用來改變標籤高度,但不能得到它的工作。也許它只能用於以編程方式創建的標籤,故事板設置會覆蓋我在此處執行的操作。

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; 

有沒有辦法讓故事板中創建的標籤的高度爲零,如果它們是空的?

+0

你可以使用堆棧視圖嗎?文字如何變化?爲什麼你有一個固定數量的標籤,如果你可能沒有那麼多的文字? – Wain

+0

這些標籤是名稱,標題,地址的第一行,地址的第二行,城市狀態,郵政編碼,電子郵件......垂直堆疊在名片上。但是,如果標題地址第2行或電話號碼未由用戶填寫,我不希望有空位。我也試圖避免標題:有空白。只是想顯示標題或電子郵件地址(如果存在),否則不顯示。支持ios8,所以我認爲nixes堆棧視圖。 – user1904273

+0

你可以用一個標籤 – Wain

回答

0

您可以覆蓋包含您的標籤視圖的下面的方法做這樣的事情:

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

這種方法是爲了讓佈局或查看子視圖。現在我不知道如果您使用限制來定義標籤的高度。如果是這樣,你應該改變標籤的高度。注意在上面的例子中我使用了CGRectZero

+0

做到這一點,你的意思是說,如果標籤爲空,就調用該方法。或者是自動調用該方法? – user1904273

+0

方法layoutsubviee被稱爲alwaiys。如果標籤爲空,只需將高度設置爲零。 –