且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在用户点击“更多”时展开UITextview按钮在ios中

更新时间:2023-12-01 23:20:16

1.根据文本和字体检查UItextView大小:

1.Check UItextView size base on text and Font:

// return the size for UITextView for both IOS7 and IOS6
-(CGSize) getSizeWithMaxLabelSize:(CGSize) maxLabelSize forTextViewWithText:(NSString *) text
{
CGSize expectedLabelSize;
CGSize maximumLabelSize = maxLabelSize;
if (SYSTEM_VERSION_GREATER_THAN(@"6.2")) {
    NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:[UIFont fontWithName:@"Arial" size:EPCommentViewFontSize] forKey: NSFontAttributeName];
    CGRect rect =[text boundingRectWithSize:maximumLabelSize options:NSStringDrawingUsesLineFragmentOrigin attributes:stringAttributes context:nil];
    expectedLabelSize = rect.size;
    expectedLabelSize.height = ceilf(expectedLabelSize.height);
    expectedLabelSize.width  = ceilf(expectedLabelSize.width);
} else {
    expectedLabelSize = [text sizeWithFont:[UIFont fontWithName:@"Arial" size:EPCommentViewFontSize] constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping];
}
  return expectedLabelSize;
}

2.Change UITextView frame.size.height

2.Change UITextView frame.size.height

CGRect frame = _textView.frame;
frame.size.height = [self getSizeWithMaxLabelSize:CGSizeMake(_textView.frame.size.height, NSIntegerMax) forTextViewWithText:_textView.text].height;
_textView.frame = frame;

3.更改子视图布局

// this will work only if you textview is on the top of other views. 
[UIView animateWithDuration:0.25 animations:^{
        for (UIView *subview in self.view.subviews) 
            subview.transform = CGAffineTransformMakeTranslation(0, _textView.frame.size.height);
}];

应该是它。