2014-02-11 52 views
1

我一直在iOS 5/6應用程序中使用此代碼很長一段時間。這是在viewWillAppear:和操縱一個UILabel高度,它可以根據需要適應更多的文本(並推動其下的其他標籤)。問題是,在iOS 7中,它似乎不再起作用。文本根本不包裝到第二行。這裏是代碼:爲什麼我的UILabel框架代碼在iOS 6中工作,但不在iOS 7中工作?

self.titleLabel.text = titleString; 
self.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
self.titleLabel.numberOfLines = 0; 

// Determine what the size of the title label should be 
CGSize maximumLabelSize = CGSizeMake(163,66); 
CGSize expectedLabelSize = [titleString sizeWithFont:self.titleLabel.font 
              constrainedToSize:maximumLabelSize 
              lineBreakMode:self.titleLabel.lineBreakMode]; 

// Adjust the the new height of the title label. 
CGRect newFrame = self.titleLabel.frame; 
newFrame.size.height = expectedLabelSize.height; 
self.titleLabel.frame = newFrame; 

NSLog(@"Title Height: %f", self.titleLabel.frame.size.height); 

這裏有一些信息。此UILabel位於UITableView的標題視圖中。它的設計與Interface Builder和IBOutlet標籤。在iOS 6和iOS 7項目中,UILabel的屬性都是相同的。

這裏是什麼樣子在Xcode 4對運行iOS 6的:

enter image description here

這裏是Xcode的5與iOS 7(因爲你可以看到,該文本不換下來):

enter image description here

人有什麼想法?

enter image description here

+0

你有沒有對的UILabel行數設置爲一個足夠高的價值嗎? – Linuxios

+0

iOS 7中的文本渲染有一些怪癖,人們已經注意到,嘗試給標籤多一些像素高度(也許是+5),並查看它是否正確包裝 – Jack

+0

即使將高度增加了+10,仍然沒有任何結果。這就像標籤變得更大,但文字不包裹或出現在該區域。 –

回答

1

像@Jack吳邦國說,嘗試給標籤幾個像素。也就是iOS的7 sizeWithFont已取代boundingRectWithSize

GSize maximumLabelSize = CGSizeMake(163,66); 
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:titleString attributes:@{NSFontAttributeName: self.titleLabel.font}]; 
CGRect rect = [attributedText boundingRectWithSize:maximumLabelSize 
              options:NSStringDrawingUsesLineFragmentOrigin 
              context:nil]; 
CGSize expectedLabelSize = rect.size; 
0

確保您的UILabel是顯示文本所需的正確的高度。

然後確保你沒有改變UILabel上的numberOfLines。

如果你想的UILabel使用盡可能多的行,在它需要的行數,然後設置爲0

myLabel.numberOfLines = 0; 
+0

已經設置爲。 –

+0

您是否在使用自動佈局? – AppHandwerker

+0

不是,不在該地區。 –

0

雖然你打印的尺寸,我想如果它是不同的,你將有說。可能發生的情況是,由於某些約束或調整大小選項,顯示時會更改大小。你可以做的一件事是測試標籤上的背景顏色,看它是否是垂直的正確尺寸。還爲標題視圖設置backgroundColor。通常我會這樣做,以確保事物具有正確的大小。

此外,sizeWithFont:方法在iOS7上已被棄用。

您可以使用此下拉替代我得到了這個答案在這裏:

UITableViewCell with UITextView height in iOS 7?

相關問題