我有一个不推荐的方法有问题,我试图改变它为一个工作,但没有运气,有人知道如何解决这个问题吗?
问题是我正在编写一个不是我的代码,所以我没有很好地理解它。
这是原始代码(,被废弃的):
CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin;
CGSize maxSize = CGSizeMake(maxWidth, remainingHeight);
CGSize detailsLabelSize = [detailsLabel.text sizeWithFont:detailsLabel.font
constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];这是我的解决方案(抛出错误的):
CGFloat remainingHeight = bounds.size.height - totalSize.height - kPadding - 4 * margin;
CGSize maxSize = CGSizeMake(maxWidth, remainingHeight);
CGSize detailsLabelSize = [[detailsLabel.text sizeWithAttributes:@{NSFontAttributeName:detailsLabel.font}]constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];错误出现在标题中(坏接收方输入'CGSize‘(又名'struct CGSize'))
非常感谢!
发布于 2015-08-31 16:28:25
在实现文件中添加此方法:
-(CGSize)frameForText:(NSString*)text sizeWithFont:(UIFont*)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode {
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
paragraphStyle.lineBreakMode = lineBreakMode;
NSDictionary * attributes = @{NSFontAttributeName:font,
NSParagraphStyleAttributeName:paragraphStyle
};
CGRect textRect = [text boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil];
return textRect.size;
}然后将代码更改为:
CGSize detailsLabelSize = [self frameForText:detailsLabel.text sizeWithFont:detailsLabel.font constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];发布于 2015-08-31 16:24:15
你的问题就在这一行:
CGSize detailsLabelSize = [[detailsLabel.text sizeWithAttributes:@{NSFontAttributeName:detailsLabel.font}]constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];[detailsLabel.text sizeWithAttributes:@{NSFontAttributeName:detailsLabel.font}]返回一个不是对象的CGSize。然后尝试在这个constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode上调用CGSize,这是不可能的,因为它不是一个对象。
https://stackoverflow.com/questions/32315559
复制相似问题