【问题标题】:How to get this value as a CGFloat?如何将此值作为 CGFloat 获得?
【发布时间】:2009-07-31 14:48:52
【问题描述】:

我要求这样的价值:

[self.layer valueForKeyPath:@"transform.rotation.z"]

bit 我需要将它传递给一个以 CGFloat 作为参数的方法。这里的施法技巧是什么?

【问题讨论】:

    标签: iphone casting


    【解决方案1】:

    在斯威夫特中:

    let f = view.layer.valueForKeyPath("transform.rotation.z")!.floatValue
    

    在 Objective-C 中:

    NSNumber* n = [self.layer valueForKeyPath:@"transform.rotation.z"];
    CGFloat f = [n floatValue];
    

    【讨论】:

    • 错了,floatValuefloat,而 CGFloat 在 64 位平台上是 double
    • 你是对的!这是一个正确的答案stackoverflow.com/a/34301580/22147
    • 或者只是ifdefCGFLOAT_IS_DOUBLE
    【解决方案2】:

    如果您想要一种更简洁的单行方式,您可以这样做:

    CGFloat f = [[self.layer valueForKeyPath:@"transform.rotation.z"] floatValue];
    

    【讨论】:

      猜你喜欢
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2015-07-27
      • 1970-01-01
      相关资源
      最近更新 更多