【发布时间】: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;
};
【问题讨论】:
-
我也有同样的问题。你发现问题了吗?
-
你有什么运气吗?我也有同样的问题。
标签: ios uitableview uikit