将不推荐使用的sizeWithFont方法修改为boundingRectWithSize:options:attributes:context

时间:2014-03-15 12:29:26

标签: ios objective-c

我正在努力解决设置UITextView高度的问题,这取决于其内容。

最后,我找到一个效果很好的解决方案,但它警告我这里使用的方法sizeWithFont已弃用。

当我尝试将旧方法修改为新方法时,我得到了一个"黄色"警告,我想将其修改为新的boundingRectWithSize:options:attributes:context方法。

我想要修改我的代码:

-(void)configureTextView {

    CGSize textViewSize = [self.descriptionStringShort sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:20]
                           constrainedToSize:CGSizeMake(self.myTextView.frame.size.width, FLT_MAX)
                               lineBreakMode:UILineBreakModeTailTruncation];

    CGRect frame = self.myTextView.frame;
    frame.size.height = textViewSize.height;
    self.myTextView.frame = frame;
}

2 个答案:

答案 0 :(得分:1)

试试这个

CGSize textViewSize = [self.descriptionStringShort sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(210.0f, 2000.0f)];

答案 1 :(得分:1)

怎么样:

NSDictionary *stringAttributes = [NSDictionary dictionaryWithObject:[UIFont fontWithName:@"Marker Felt"
                                                                                        size:20]
                                                                 forKey: NSFontAttributeName];
    CGSize maximumLabelSize = CGSizeMake(self.myTextView.frame.size.width, FLT_MAX);
    CGSize textViewSize = [self.descriptionStringShort boundingRectWithSize:maximumLabelSize
                                                                    options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin
                                                                 attributes:stringAttributes context:nil].size;

    CGRect frame = self.myTextView.frame;
    frame.size.height = textViewSize.height;
    self.myTextView.frame = frame;