iOS 6 で NSAttributedString が利用できるようになりました。レイアウトの目的で、固定幅で NSAttributedString の必要な高さを計算する方法を知りたいです。NSString と同等のものを探しています- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
が、NSAttributedString 用です。
NSAttributedStrings の描画サイズを計算するには、次の 2 つの方法を使用できます。
- (CGSize)size
幅を考慮していないため使用できません。- を試し
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context
ましたが、どういうわけか正しい高さが得られません。メソッドがおかしいと思います。次のコードを実行するとbounding size: 572.324951, 19.000000
、指定された幅 200 が無視されます。高さは 100 程度になるはずです。
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; NSDictionary *attributes = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue" size:15], NSForegroundColorAttributeName : [UIColor blueColor]}; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; [attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Attributed String\n" attributes:attributes]]; CGRect フレーム = [attributedString boundingRectWithSize:CGSizeMake(200, 1000) オプション:0 コンテキスト:nil]; NSLog(@"境界サイズ: %f, %f", frame.size.width, frame.size.height);
Mac OS X で使用できる方法は他にもありますが、iOS では使用できません。