尺寸如何适合计算尺寸? IOS

时间:2015-12-02 11:42:38

标签: ios uitextview ios9 sizetofit

我需要计算textView的高度。

我正在以不同的方式使用:

1

 CGSize new_size= [self sizeThatFits:CGSizeMake(self.frame.size.width, MAXFLOAT)];
        CGFloat newHeight = new_size.height;
        CGRect new_frame = self.frame;
        new_frame.size.height = newHeight;
        [self setFrame:new_frame];

2

 CGSize size = CGSizeMake(self.frame.size.width,MAXFLOAT);
    NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineBreakMode:NSLineBreakByCharWrapping];
    NSDictionary *attributes = @{ NSFontAttributeName: self.font, NSParagraphStyleAttributeName : paragraphStyle };

    CGRect frame = [self.text boundingRectWithSize:size
                                           options:(NSStringDrawingUsesLineFragmentOrigin)
                                        attributes:attributes
                                           context:context];

    CGFloat newHeight = frame.size.height;
    CGRect new_frame = self.frame;
    new_frame.size.height = newHeight;
    [self setFrame:new_frame];
有时候它们返回相同的高度,有时候第二种方法返回高度<从第一种方法开始。

但是第一种方法一直返回正确的高度!

第二种方法的问题是什么?

修改 我注意到:当height < 59时,两个函数都返回相同的东西,而当height >59时,第一个方法返回正确的高度。第二个回归59。

修改 看来,当我使用系统字体时:

[self setFont:[UIFont systemFontOfSize:15]]

以上两种方法都能正常工作。

但是当我使用另一种字体时:

[self setFont:[UIFont fontWithName:@"Roboto-Light" size:15]]

然后第二种方法无法正常工作。

为什么会这样?

0 个答案:

没有答案