首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:错误的接收器类型'CGSize‘(又名'struct CGSize') \ Xcode 6.4 \ iOS 8.4

错误:错误的接收器类型'CGSize‘(又名'struct CGSize') \ Xcode 6.4 \ iOS 8.4
EN

Stack Overflow用户
提问于 2015-08-31 16:13:27
回答 2查看 2.2K关注 0票数 0

我有一个不推荐的方法有问题,我试图改变它为一个工作,但没有运气,有人知道如何解决这个问题吗?

问题是我正在编写一个不是我的代码,所以我没有很好地理解它。

这是原始代码(,被废弃的):

代码语言:javascript
运行
复制
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];

这是我的解决方案(抛出错误):

代码语言:javascript
运行
复制
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'))

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-31 16:28:25

在实现文件中添加此方法:

代码语言:javascript
运行
复制
-(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;
}

然后将代码更改为:

代码语言:javascript
运行
复制
CGSize detailsLabelSize = [self frameForText:detailsLabel.text sizeWithFont:detailsLabel.font constrainedToSize:maxSize lineBreakMode:detailsLabel.lineBreakMode];
票数 0
EN

Stack Overflow用户

发布于 2015-08-31 16:24:15

你的问题就在这一行:

代码语言:javascript
运行
复制
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,这是不可能的,因为它不是一个对象。

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

https://stackoverflow.com/questions/32315559

复制
相关文章

相似问题

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