在 boundingRectWithSize:options:context: 中使用 NSStringDrawingUsesLineFragmentOrigin: 获得额外的空白空间
Posted
技术标签:
【中文标题】在 boundingRectWithSize:options:context: 中使用 NSStringDrawingUsesLineFragmentOrigin: 获得额外的空白空间【英文标题】:Using NSStringDrawingUsesLineFragmentOrigin in boundingRectWithSize:options:context: gets extra blank space 【发布时间】:2014-05-30 08:28:14 【问题描述】:我在 ios 7 中使用 boundingRectWithSize:options:context: 来尝试计算 UITableViewCell 中文本的动态高度。但是,使用这种方法和NSStringDrawingUsesLineFragmentOrigin
作为选项,我总是在底部和顶部获得一些额外的空间。如果我切换到NSStringDrawingUsesDeviceMetrics
,则单词不会在行尾换行。这是截图:
对于一些包含更多文本的行,空间会更大。我该如何解决这个问题?我使用以下代码来获取包含文本的 UILabel 框架的大小:
- (CGSize)sizeWithMaxSize:(CGSize)constrainedSize andFontSize:(CGFloat)fontSize
self.paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
self.paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *dictionary = @NSFontAttributeName: [UIFont systemFontOfSize:fontSize],
NSParagraphStyleAttributeName: self.paragraphStyle.copy,
NSForegroundColorAttributeName:[UIColor blackColor];
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:self attributes:dictionary];
CGRect frame = [attributedString boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];
return frame.size;
;
【问题讨论】:
我也有同样的问题。你发现问题了吗? 你有什么运气吗?我也有同样的问题。 【参考方案1】:如果你 OR 这两个选项会怎样,因为它们只是位字段...NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesDeviceMetrics
所以而不是:
CGRect frame = [attributedString boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];
你有:
CGRect frame = [attributedString boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesDeviceMetrics context:nil];
?
【讨论】:
以上是关于在 boundingRectWithSize:options:context: 中使用 NSStringDrawingUsesLineFragmentOrigin: 获得额外的空白空间的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?