iOS 7 uitextview NSLineBreakByWordWrapping无效

时间:2013-11-20 07:59:27

标签: ios objective-c uitextview

在iOS 7中,我使用新方法来计算textview高度,但似乎它不是自动换行,此外,高度不是文本的高度。

self.textview.textContainer.lineBreakMode = NSLineBreakByWordWrapping;
    self.textview.showsHorizontalScrollIndicator= NO;
    self.textview.showsVerticalScrollIndicator = NO;
//    [self.textview sizeThatFits:CGSizeMake(296, 474)];
//    [self.textview.text sizeWithFont:[UIFont systemFontOfSize:14] forWidth:296.0 lineBreakMode:NSLineBreakByWordWrapping];

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

    NSDictionary *attributes = @{ NSFontAttributeName: self.textview.font, NSParagraphStyleAttributeName : paragraphStyle };
//
   CGSize size= [self.textview.text boundingRectWithSize:CGSizeMake(CGRectGetWidth(self.textview.frame), MAXFLOAT)
                                              options:NSStringDrawingUsesLineFragmentOrigin
                                           attributes:attributes
                                              context:nil].size;
    CGRect frame = self.textview.frame;
    frame.size = size;
    self.textview.frame= frame;
有谁帮忙?

enter image description here

3 个答案:

答案 0 :(得分:2)

解决了问题,因为文本有错误的白色包机,即用其他字符替换白色字符。

答案 1 :(得分:0)

试试这个:

CGSize maximumLabelSize = CGSizeMake(295,99999);

    CGSize expectedLabelSize = [self.textview. sizeWithFont:self.textview..font constrainedToSize:maximumLabelSize lineBreakMode:self.textview.lineBreakMode];   

    //adjust the label the the new height.
    CGRect newFrame = self.textview.frame;
    newFrame.size.height = expectedLabelSize.height;
    self.textview.frame = newFrame;

检查包含您给定文字的图片:http://screencast.com/t/Yqr6oSOvhN1

答案 2 :(得分:0)

我遇到了类似的问题,因为我的字符空间错误。 对于替换我用过:

message = [message stringByReplacingOccurrencesOfString:@"\u00A0" withString:@“ "];