0

SOでのこの方法に関するすべての投稿のように感じるものを確認しました。そして、ポスターの答えの多くは、高さの制約として非常に大きな値を設定することです。

しかし、私にとってこれは機能していません。これは私のコードです:

//Create the contentLabel Label
    CGSize size = [contentText sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14] constrainedToSize:CGSizeMake(286, 9999) lineBreakMode:UILineBreakModeWordWrap];

    //Create the content label with its position 7 pixels below the title 
    contentLabel = [[NIAttributedLabel alloc] initWithFrame:
                   CGRectMake(7, titleContainerView.frame.origin.y + 7, 286, size.height)];

    //Set the provided text and the font
    contentLabel.font = [UIFont fontWithName:@"Helvetica" size:14];
    contentLabel.numberOfLines = 0;
    contentLabel.lineBreakMode = UILineBreakModeWordWrap;
    contentLabel.text = contentText;

私が使用しNIAttributedLabelているのは、間違ったサイズであると私が信じているものを返すメソッドがの一部であるため、これは実際には効果がないはずだと思いましたNSString

私はAppleのドキュメントを読んで、メソッドが文字列を切り捨てることがあることを読みましたが、それが大きな高さの制約の目的であると思いました

編集: 私はそれが問題であることを発見しましたNIAttributedLabel、私が通常のUILabelを使用する場合、それは完全に機能します。これが2つのソース文字列と対応するスクリーンショットです。最初は私の問題を示しており、もう1つは問題ないと判断しています。

"Buying a Mobile\nHello - I'd like a Motorola Defy with a Smartphone 60 Plan.\nBroadband Problem\nMy Broadband’s out. I've tested the router and cables and ruled out my equipment. Is there a problem at your end?"

スクリーンショット1

"Buying a Mobile\nI\'m Mrs Sina Manu-Harris. My account number is 156205169. I\'m going overseas in 6 months time on the 2nd of September and I\'d like to get organized in advance and buy a new mobile phone.\nBroadband Problem\nGood afternoon. It’s Mrs Sina Manu-Harris here. My account number is 156205169. My Broadband isn’t working. I’ve checked my network and phone cables and I've also checked my filters."

スクリーンショット2

4

3 に答える 3

1

NimbusKit 1.0は、NIAttributedLabelの高さを計算するための新しいメソッドを提供します:NISizeOfAttributedStringConstrainedToSize()

以前はsizeWithFont:を使用していましたが、同じ問題が発生しました。これで、新しい方法が完全に機能しました(帰属ラベルに画像がありません)

于 2013-04-11T16:03:58.630 に答える
0

CoreTextと同じグリフ配置アルゴリズムを使用してNSStringに依存することはできません。NIAttributedLabelのサイズを設定するときは、ラベルの理想的なサイズを決定するためにCoreTextを使用するため、ラベルsizeToFitとメソッドを使用することをお勧めします。sizeThatFits:

于 2012-07-22T18:23:11.183 に答える
0

文字列@"T\ nT\nT"で確認してください。@"T\ nT\n"のみが出力されます。_textFrameには、3行ではなく2行しか表示されないようです。

于 2012-07-22T19:51:36.513 に答える