首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不推荐使用“sizeWithFont:constrainedToSize:”替换

不推荐使用“sizeWithFont:constrainedToSize:”替换
EN

Stack Overflow用户
提问于 2014-02-27 19:35:12
回答 2查看 1.1K关注 0票数 0

有人知道如何使用-boundingRectWithSize:options:attributes:context:来替代本例中不推荐使用的“sizeWithFont:constrainedToSize:”方法。

代码语言:javascript
复制
CGSize labelSize = [self.mainLabel.text sizeWithFont:self.mainLabel.font constrainedToSize:CGSizeMake(CGFLOAT_MAX, CGRectGetHeight(self.bounds))];

获取警告:“sizeWithFont:constrainedToSize:”已弃用:在iOS 7.0中首次被弃用-请使用-boundingRectWithSize:options:attributes:context:

这是洞的代码片段:

代码语言:javascript
复制
 // calculate the label size

CGSize labelSize = [self.mainLabel.text sizeWithFont:self.mainLabel.font constrainedToSize:CGSizeMake(CGFLOAT_MAX, CGRectGetHeight(self.bounds))];

each_object(self.labels, ^(UILabel *label) {
    CGRect frame = label.frame;
    frame.origin.x = offset;
    frame.size.height = CGRectGetHeight(self.bounds);
    frame.size.width = labelSize.width + 2.f /*Magic number*/;
    label.frame = frame;


    // Recenter label vertically within the scroll view
    label.center = CGPointMake(label.center.x, roundf(self.center.y - CGRectGetMinY(self.frame)));

    offset += CGRectGetWidth(label.bounds) + self.labelSpacing;
});
EN

回答 2

Stack Overflow用户

发布于 2014-02-27 19:38:00

目前你有..。

代码语言:javascript
复制
CGSize labelSize = [self.mainLabel.text sizeWithFont:self.mainLabel.font constrainedToSize:CGSizeMake(CGFLOAT_MAX, CGRectGetHeight(self.bounds))];

所以使用...

代码语言:javascript
复制
CGRect boundingRect = [self.mainLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGRectGetHeight(self.bounds))
                                                        options:NSStringDrawingUsesLineFragmentOrigin
                                                        context:nil];

CGSize labelSize = boundingRect.size;

这应该行得通。

或者..。有了属性...

代码语言:javascript
复制
CGRect boundingRect = [self.mainLabel.text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGRectGetHeight(self.bounds))
                                                        options:NSStringDrawingUsesLineFragmentOrigin 
                                                     attributes:@{NSFontAttributeName:self.mainLabel.font} 
                                                        context:nil];
票数 2
EN

Stack Overflow用户

发布于 2014-02-27 19:46:09

例如,这样做

代码语言:javascript
复制
-(CGFloat)getLabelSize:(UILabel *)label fontSize:(NSInteger)fontSize
{


   NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                      [UIFont systemFontOfSize:fontSize], NSFontAttributeName,
                                      nil];

   CGRect frame = [label.text boundingRectWithSize:CGSizeMake(270, 2000.0)
                                        options:NSStringDrawingUsesLineFragmentOrigin
                                     attributes:attributesDictionary
                                        context:nil];

   CGSize size = frame.size;

   return size.height;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22067284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档