2016-09-08 7 views
0

得ていないテキストの高さを正しくも、私のテキストは、同様に「\ n」は改行文字持っているのと同じ値を取得していますサイズブーティのような他のアプローチを試みたNSStringのテキストの高さが正しい値になりませんか?

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 

CGRect rect = [text boundingRectWithSize:CGSizeMake(textWidth, MAXFLOAT) 
           options:NSStringDrawingUsesLineFragmentOrigin 
           attributes:@{NSFontAttributeName:textFont, 
              NSParagraphStyleAttributeName: 
               paragraphStyle} 
           context:nil]; 

正しく(「\ n」)を新しい行を持つ場合。

答えて

1

NSLineBreakByClippingは、テキストを自動的に収縮させたいときに使用します。テキストに合わせてビューを調整しようとしている場合は、NSLineBreakByWordWrappingが必要になります。

また、コントロールの現在の幅からtextWidthを取得する場合は、viewWillAppear以降の幅を取得してください(viewDidLoadではなく)。

+0

NSLineBreakByWordWrappingは、私はそれが私がiPhoneの6Sでこの問題に直面していますプラスのみ – balusu

0

rect値を丸める必要があります。以下の例を参照してください。

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 

CGRect rect = [text boundingRectWithSize:CGSizeMake(textWidth, MAXFLOAT) 
           options:NSStringDrawingUsesLineFragmentOrigin 
           attributes:@{NSFontAttributeName:textFont, 
              NSParagraphStyleAttributeName: 
               paragraphStyle} 
           context:nil]; 



rect = CGRectIntegral(rect); 
+0

を更新使用!!!! – balusu

0

は、あなたはそれがparagraphと考えられるためNSMutableParagraphStyleを使用したい場合は、いくつかの値でfirstLineHeadIndentを設定する必要があります。

firstLineHeadIndentを指定しないと、NSMutableParagraphStyleは機能しません。

したがって、次のような値を無視して設定すれば、問題は解決する可能性があります。

paragraphStyle.firstLineHeadIndent = 0.0001f; 

アップデート:私は、以下のようなこの何かを管理

// I am using this commented code with my custom class 

// CustomLabel *staticTextLabel = [[CustomLabel alloc]init]; 
// NSString *title; 
//  
// staticTextLabel.topInset = 0.0; 
// staticTextLabel.leftInset = 10.0; 
// staticTextLabel.rightInset = 10.0; 
// staticTextLabel.bottomInset = 0.0; 


// you can use below code 
UILabel *staticTextLabel = [[UILabel alloc]init]; 
NSString *title = @"your string here"; 


NSMutableParagraphStyle *paragraphStyles = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyles.alignment = NSTextAlignmentJustified;  //justified text 
paragraphStyles.firstLineHeadIndent = 0.0001f;    //must have a value to make it work 


UIFont *myFont = staticTextLabel.font; 

NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyles, NSFontAttributeName : myFont}; 
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString: title attributes: attributes]; 


// set width according to your case 
CGSize maximuLabelSize = CGSizeMake(self.view.frame.size.width - 40 -20, FLT_MAX); //20 is padding space (left right) 


CGRect textRect = [attributedString boundingRectWithSize:maximuLabelSize 
               options: NSStringDrawingUsesLineFragmentOrigin| NSStringDrawingUsesFontLeading 
               context:nil]; 


CGFloat height2 = textRect.size.height ; 
NSLog(@"height 2 is %f",height2); 


// manage width according to your case and height also if any padding is there 
CGRect newFrame = CGRectMake(20, 10, self.view.frame.size.width - 40, height2 +20); // 20 is for top bottom padding 
staticTextLabel.frame = newFrame; 
staticTextLabel.layer.borderWidth = 1.0; 
staticTextLabel.layer.borderColor = [[UIColor lightGrayColor]CGColor]; 
staticTextLabel.attributedText = attributedString; 
staticTextLabel.numberOfLines = 0; 

そして、それはすべてのデバイスで動作しているのです私のプロジェクトの一つで

。あなたはそれを試すことができます!!

+0

私はこのiPhone用6Sで問題とプラスの答えでのみ – balusu

+0

チェックアップデートを直面しています – Lion

+0

ありがとうKetanは上記のコードを試してみましたが、まだ動作していません.AttributeStringを使用しないと何もできません – balusu

関連する問題