如何根据数据动态调整UITextView和scrollview

时间:2015-07-10 06:22:43

标签: ios swift

enter image description here

在我的项目中,我必须根据我正在尝试的数据动态调整UItextview和UIScrollView,但完美的结果不会来,请帮我一个。

请参阅我的基于数据增长textview的代码,我不知道如何根据数据增长UIScrollView,请有人帮助我。

- (void)textViewDidChange:(UITextView *)textView
{
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
    CGRect newFrame = textView.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
    textView.frame = newFrame;
}

1 个答案:

答案 0 :(得分:0)

您可以将textview框架的大小设置为

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

或者您可以尝试以下代码。

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

甚至您可以尝试以下代码。

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping];

    NSDictionary *attributes = @{ NSFontAttributeName: textView.font, NSParagraphStyleAttributeName : paragraphStyle };

    CGRect size = [textToMeasure boundingRectWithSize:CGSizeMake(CGRectGetWidth(frame), MAXFLOAT)
                                              options:NSStringDrawingUsesLineFragmentOrigin
                                           attributes:attributes
                                              context:nil];