0

この質問は何度も尋ねられましたが、明確ではありませんが、間違った出力が得られました。だから誰か助けてください..

CGSize maximumSize = CGSizeMake(208, 21);
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [my_string sizeWithFont:myFont
                           constrainedToSize:maximumSize
                               lineBreakMode:self.my_label.lineBreakMode];
my_label.numberOfLines = 0;
my_label.frame.size = myStringSize;

サイズ (208, 21) のラベルがあります。次のコードを使用して、ラベルの幅に対して NSString に必要な実際の高さを取得しました。幅を固定したいのですが、ラベルに設定できるように高さだけを変更する必要があります。しかし、それは常に実際よりも低い高さを与えます..私はここで何か間違ったことをしています..

ありがとう..

4

3 に答える 3

2

あなたの例では、高さを制限する代わりに、(非常に) 大きい高さで最大サイズを使用します。

CGSize maximumSize = CGSizeMake(208, CGFLOAT_MAX);

このようにして、幅を実際に必要な幅に制限しながら、拡張するのに十分な高さを常に確保できます。

于 2013-01-15T11:13:45.480 に答える
0
+  (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString
{
    CGSize maximumSize = CGSizeMake(width, 9999);
    CGSize size = [textString sizeWithFont:[UIFont fontWithName:@"Helvetica" size:24]
                         constrainedToSize:maximumSize 
                             lineBreakMode:UILineBreakModeWordWrap];
    return size;
}

+ (CGSize) calculateLabelWidthOfString:(NSString*)textString withFont:(UIFont*)font
{
    CGSize maximumSize = CGSizeMake(9999, 22);
    CGSize size = [textString sizeWithFont:font
                         constrainedToSize:maximumSize 
                             lineBreakMode:UILineBreakModeWordWrap];
    return size;
}

これら2つを高さまたは幅に使用します

于 2013-01-15T11:32:56.233 に答える
0

これを試して :

-(CGSize) calculateWidthOfString:(NSString*)textString withFont:(UIFont*)font
    {
        CGSize maximumSize = CGSizeMake(9999, 22);
        CGSize size = [textString sizeWithFont:font
                             constrainedToSize:maximumSize 
                                 lineBreakMode:UILineBreakModeWordWrap];
        return size;
    }

この関数を stringObject と Font Name、Size で呼び出します

一定の高さ「22」で文字列の幅を返し、この値を必要に応じて変更します。

これがあなたを助けることを願っています。

于 2013-01-15T11:19:28.720 に答える