13

誰かが回避策を知っていますか、または私が現在ここで間違っていることを知っていますか?

CGSize boundingSize = CGSizeMake(288, 9999);

CGRect boundingRect = [text boundingRectWithSize:boundingSize 
                                                 options:NSStringDrawingUsesLineFragmentOrigin
                                              attributes:[NSDictionary dictionaryWithObjectsAndKeys:theFont, NSFontAttributeName, nil]
                                                 context:nil];

コードが iOS7 (電話と sim の両方) で実行される場合、返されるサイズは幅 416.3、高さ 15.5 です。明らかに、boundingRectWithSize は単に無視されています。他の誰かがこれに遭遇しましたか?もしそうなら、誰かがそれを修正する方法についての考えを持っていますか、誰かが私が間違っている場所を教えてくれますか.

4

3 に答える 3

1

これは古い質問であることは知っていますが、問題の回避策を見つけました。以下はコード例です

1)最初に最小高さのマクロを作成します

#define MIN_HEIGHT 10.0f

2)その後、以下のコードを使用して、指定したテキストに基づいて可変高さを指定します。ただし、このためには、UILabel のフレームを指定するか、テキストを表示するために使用しているものを指定する必要があります。

// Initialize UILabel with initial frame.
UILabel *lblMakeModel = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 180, 50)];
// Set numberOfLines as zero
lblMakeModel.numberOfLines = 0;
// Set text here
lblMakeModel.text = @"sdbsbdjhsbdhjsbdhjasd bhbdhjasbdsahjdbahjsdbjhsd bdhjsabdhjsbdhsbdhsad dhbsadbasdhbsajhdbsadyogi";
// create a constraint for fixed width and maximum 20000 height.
CGSize constraint = CGSizeMake(lblMakeModel.frame.size.width, 20000.0f);
// Get the CGRect with the given constraint for the text of UILabel
CGRect textRect = [lblMakeModel.text boundingRectWithSize:constraint
                                         options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
                                      attributes:@{NSFontAttributeName:lblMakeModel.font}
                                         context:nil];

// Set LineBreakMode for UIlabel
[lblMakeModel setLineBreakMode:NSLineBreakByWordWrapping];
[lblMakeModel setAdjustsFontSizeToFitWidth:NO];
// Again set the frame from the height you get from CGRect object.
[lblMakeModel setFrame:CGRectMake(lblMakeModel.frame.origin.x, lblMakeModel.frame.origin.y, lblMakeModel.frame.size.width, MAX(textRect.size.height, MIN_HEIGHT))];
于 2014-07-14T04:08:13.697 に答える