4

ラベルのサイズを動的に設定しようとしています。それは奇妙な方法で動作します。テキストの一部が切り取られます。最初にラベル テキストを設定してから、このようにサイズ変更を試みます。

    _switch2Label.text = @"Call on alarm, there will be no call if other user of alarm system will recieve an alarm call and confirm (answer) it by pressing 0#";
    _switch2Label.numberOfLines = 0;
    [self newFrame:_switch2Label];

- (void) newFrame:(UILabel *) label
{

    CGSize maxSize = self.view.bounds.size;
    maxSize.width = maxSize.width - 30;
    CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maxSize lineBreakMode:label.lineBreakMode];

    CGRect newFrame = label.frame;
    newFrame.size.height = labelSize.height;
    label.frame = newFrame;

}

このラベルには 5 行が必要ですが、3 行のテキストしか表示されません。多分誰かがここで私の間違いを見ることができましたか?ラベルにさらにテキストを追加すると表示されますが、ラベル テキストの約 2 行が途切れます。

4

4 に答える 4

2

私はあなたの方法を変更しました.それをチェックしてください..それはあなたを助けるかもしれません..

- (void) newFrame:(UILabel *) label
{
     CGSize constraint = CGSizeMake(300, 1000.0f);
     CGSize size_txt_overview1 = [label.text sizeWithFont:[UIFont fontWithName:@"Arial Rounded MT Bold" size:15] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
     label.frame = CGRectMake(20,20, size_txt_overview1.width, size_txt_overview1.height+15);
}
于 2012-11-26T07:50:46.417 に答える
2
 _switch2Label.text = @"Call on alarm, there will be no call if other user of alarm system will recieve an alarm call and confirm (answer) it by pressing 0#,";
 _switch2Label.numberOfLines = 0;
 [self newFrame:_switch2Label];



- (void) newFrame:(UILabel *) label
{

    CGSize maximumSize = CGSizeMake(label.frame.size.width, 10000);
    //maxSize.width = maxSize.width - 30;
    CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maximumSize lineBreakMode:UILineBreakModeWordWrap];

    CGRect newFrame = label.frame;
    newFrame.size.height = labelSize.height;
    label.frame = newFrame;

}

このコードブロックを使用すると、役立つ場合があります。

于 2012-11-26T07:47:02.323 に答える
0

なぜプログラムでラベルのサイズを変更するのですか?これは、IBまたはautorezizeMaskを使用して実行できないことですか?

于 2012-11-26T07:27:38.870 に答える
0

ラベルの制約サイズが意図したとおりに計算されていません。現在、コードはラベルの高さをビューの境界の高さに制限しています。maxSize インスタンスを次のように変更します。

CGSize maxSize = CGSizeMake(self.view.bounds.size.width - 30, MAXFLOAT);
CGSize labelSize = ...

そうすることで、制約がビューの境界によって制限されないようにすることができます。ビューの境界を超えてラベルを拡張できるようにする場合は、ビューの clipsToBounds プロパティを設定することも検討してください。

于 2012-11-26T07:33:00.080 に答える