扩展UITextView高度,使其适合JSON字符串中的所有内容(iOS7)

时间:2013-11-01 18:13:47

标签: ios json afnetworking

我的Collection View Cell里面有一个UITextView,它链接到我正在用AFNetworking解析的JSON字符串(“body”)。该字符串中的文本各不相同(我的每个“帖子”都有不同的信息)。我希望我的UITextView能够根据我的String中的内容进行扩展,以便显示所有文本。

集合查看单元

@property (weak, nonatomic, readonly) IBOutlet UITextView *body;

查看控制器:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"Cell";

    PostCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    NSDictionary *newPostDictionary = [self.singlePost objectAtIndex:indexPath.row];

    cell.body.text = [newPostDictionary objectForKey:@"caption"];

    NSLog(@"@");

    return cell;
}

我尝试在View Controller中添加此代码,但没有做任何事情。

- (CGFloat)textViewHeightForAttributedText: (NSAttributedString*)text andWidth: (CGFloat)width {
    UITextView *calculationView = [[UITextView alloc] init];
    [calculationView setAttributedText:text];
    CGSize size = [calculationView sizeThatFits:CGSizeMake(width, FLT_MAX)];
    return size.height;
}

感谢。

3 个答案:

答案 0 :(得分:0)

要获取任何文本的大小,您应该使用NSString的方法:sizeWithFont:constrainedToSize:作为参数传递字体,并且可以从该文本中获得最大大小。

CGSize expectedLabelSize = [text sizeWithFont:[UIFont fontWithName:fontName size:fontSize] constrainedToSize:maxSize];

答案 1 :(得分:0)

使用sizeWithFont:constrainedToSize:获取字符串

的大小

如果您使用的是iOS7,请改用boundingRectWithSize:options:attributes:context:(iOS7上不推荐sizeWithFont:constrainedToSize:

答案 2 :(得分:0)

将UITextView框架设置为与其中的内容相同:

CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;