动态单元格大小

时间:2013-11-26 09:26:30

标签: ios ios6 ios7 uipickerview

我用过

CGSize textSize = [text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];

并返回newHeight;

计算表格单元格的动态高度。 但是在iOS 7中已经不复存在了。 iOS 7也有类似的功能来计算单元格或拾取器行高的动态高度。

更新代码:

NSString * text = str.text;

                CGSize constraintSize = CGSizeMake(320.0f, 40.0f);  // Make changes in width as per your label requirement.

                CGRect textRect = [text boundingRectWithSize:constraintSize
                                     options:NSStringDrawingUsesLineFragmentOrigin
                                  attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Avenir" size:17]}
                                     context:nil];
                CGSize size = textRect.size;
                NSLog(@"textSize :: %f",size.height);


                return  size.height;

我想用以下方法设置我为拾取器视图设置的文本的字体大小。

 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
NSString *title;
title=@"The Grand Bhagvati S G Highway";
return title;
 }

3 个答案:

答案 0 :(得分:2)

对于IOS 7计算文本大小,您可以尝试:

      CGSize size = CGSizeMake(set_your_size);

     CGRect textRect = [text boundingRectWithSize:size
                             options:NSStringDrawingUsesLineFragmentOrigin
                          attributes:@{NSFontAttributeName:[UIFont fontNamesForFamilyName:@"Helvetica"}
                             context:nil];

     CGSize textSize = textRect.size;

编辑:

有关详情,请查看:

https://developer.apple.com/library/ios/documentation/uikit/reference/NSAttributedString_UIKit_Additions/Reference/Reference.html#//apple_ref/doc/uid/TP40011688-CH1-SW7

ios-6-ios-7-transition

答案 1 :(得分:1)

您可以在下面使用:

CGRect textRect = [text boundingRectWithSize:constraintSize
                                     options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin
                                  attributes:@{NSFontAttributeName:cellFont}
                                     context:nil];

答案 2 :(得分:0)

为什么不使用SizeToFit?创建一个标签,其中包含您可以为标签提供的最大框架,然后使用sizeToFit