【问题标题】:Getting values from NSValue that was created using sizeWithAttributes从使用 sizeWithAttributes 创建的 NSValue 获取值
【发布时间】:2014-11-30 21:59:02
【问题描述】:

我有一个从 NSDictionary 返回的 NSValue。 NSValue 是使用 sizeWithAttributes 创建的。 我想知道如何将 NSValue 恢复为可以使用它来创建标签大小的值。

我得到了由此计算出来的标签大小

betweensLabelSize = [betweensString sizeWithAttributes: @{
                      NSFontAttributeName: [UIFont systemFontOfSize:14.5f]
                }];

我将它作为 NSValue 放入 NSDictionary 并像这样检索

NSValue *tempSize = [currAxisDictionary objectForKey:@"betweensLabelSize"];

返回这个值

NSSize: {64.278503, 86.4925}

【问题讨论】:

    标签: ios objective-c nsvalue


    【解决方案1】:

    为了清楚起见,您大概使用+[NSValue valueWithCGSize:] 创建了NSValue-sizeWithAttributes: 没有创建 NSValue;它返回了一个 CGSize,您将其包裹在 NSValue 中。

    无论如何,您可以通过在其上调用-CGSizeValue 来从NSValue 对象中获取CGSize

    CGSize size = [tempSize CGSizeValue];
    

    【讨论】:

    • 好的,谢谢您的回复,我现在正在研究它,但不是 100% 确定如何使用 CGSizeValue
    • 我已经更新了我的答案以显示如何使用 CGSizeValue 方法从 NSValue 指向的 NSValue 对象中获取 CGSize tempSize
    • 成功了,谢谢。我以前从未使用过 CGSizeValue
    【解决方案2】:

    尝试下面的代码来访问大小值:-

    NSValue *val=[mut objectForKey:@"betweensLabelSize"];
    CGSize sz=val.CGSizeValue;
    

    【讨论】:

    • 请说明投反对票的原因。所以这将纠正答案。
    • 抱歉,您的回答中的所有内容都不正确。 OP 从字典中获取 NSValue tempSize 的行很好。它确实返回CGSize,而是返回NSValue。您建议的解决方案将崩溃​​。 OP 的目标是从NSValue 中提取CGSize 值。请参阅NSValue 的文档,了解执行此操作的简单方法。
    • NSValue 没有名为 sizeValue 的属性。也许您打算使用CGSizeValue 方法。
    • 没错,我的意思是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多