标签: cgfloat

NSNumber from CGFloat

Is there a safe way to "convert" a CGFloat to a NSNumber ?

NSNumber has the numberWithFloat: and numberWithDouble: methods but CGFloat being defined as float or double depending on the platform, it seems risky to use either one of them.

或者numberWithDouble:安全使用a CGFloat,因为它是更精确的?

floating-point objective-c nsnumber cgfloat

10
推荐指数
2
解决办法
1万
查看次数

由于Swift的混乱缺乏CGFloat的隐式转换

试图在返回`CGFloat的函数中进行算术运算,我得到一个错误:

找不到接受提供的参数的'/'的重载

func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat
{ 
     return (M_PI * (x) / 180.0) // error is here. 
}
Run Code Online (Sandbox Code Playgroud)

还有其他人见过这类问题吗?

types type-conversion cgfloat swift

10
推荐指数
2
解决办法
1万
查看次数

'CGFloat'不能转换为'Float'和更多

我的应用程序中有更多问题.我的错误如标题所示:

  1. Swift编译器错误.

错误1:'CGFloat'无法转换为'Float'

第1和第2错误的代码:

self.setPositionRelativeBot(pipeBot, x: xx, y: offset)
self.setPositionRelativeTop(pipeTop, x: xx, y: offset + space)
Run Code Online (Sandbox Code Playgroud)

这是整个功能:

func spawnPipeRow(offs: Float)
    {
        let offset = offs - space / 2

        let pipeBot = mainPipe.copy() as Pipe
        let pipeTop = mainPipe.copy() as Pipe

        pipeBot.texture = SKTexture(imageNamed: "BotPipe")
        pipeTop.texture = SKTexture(imageNamed: "TopPipe")

        pipeBot.texture!.filteringMode = SKTextureFilteringMode.Nearest
        pipeTop.texture!.filteringMode = SKTextureFilteringMode.Nearest

        pipeBot.isBottom = true

        let xx = self.view!.bounds.size.width

        self.setPositionRelativeBot(pipeBot, x: xx, y: offset)
        self.setPositionRelativeTop(pipeTop, x: xx, y: offset + space)

        pipeBot.physicsBody = SKPhysicsBody(rectangleOfSize: pipeBot.size)
        pipeTop.physicsBody = …
Run Code Online (Sandbox Code Playgroud)

cgfloat ios swift xcode6

7
推荐指数
1
解决办法
2147
查看次数

快速表达太复杂,无法在合理的时间内解决

我在Xcode中编译项目时遇到错误,它说:

表达太复杂,无法在合理的时间内解决; 考虑将表达式分解为不同的子表达式

这是代码:

static func random(min: CGFloat, max: CGFloat) -> CGFloat {
    return CGFloat(Float(arc4random()/0xFFFFFFFF) * (max - min) + min)
}
Run Code Online (Sandbox Code Playgroud)

xcode cgfloat arc4random swift

7
推荐指数
1
解决办法
6550
查看次数

如何区分未设置的浮点数和值为0的浮点数?

给定一个未设置的浮点数时,我有一个方法需要做一个不同的方法,而不是一个值为0的浮点数.基本上,我需要检查一个变量是否已经存在,如果它的值为0则将其计算为set .

那么,我应该使用哪个占位符作为未设置值(nil,NULL,NO等)以及如何测试变量是否未设置而不为值0返回true?

equality objective-c undefined cgfloat

6
推荐指数
1
解决办法
4653
查看次数

访问Swift中Objective-c .m文件中定义的全局const CGFloat

我已经在我的.m文件中定义了一些常量,我需要从我的swift代码中访问它.它们被定义为:

const CGFloat testValue = 40.0;
Run Code Online (Sandbox Code Playgroud)

在我的其他objective-c .m文件中,我可以使用extern以下方法访问它们:

extern const CGFloat testValue
Run Code Online (Sandbox Code Playgroud)

是否有一种等效的方法可以从.swift文件中访问这些常量?

constants cgfloat ios swift xcode6

6
推荐指数
1
解决办法
3908
查看次数

在Objective-C中是否使用带有或不带有后缀.f的CGFloat进行性能差异

我应该用postfix编写CGFloat值f吗?

CGFloat fValue = 1.2;
Run Code Online (Sandbox Code Playgroud)

CGFloat fValue = 1.2f;
Run Code Online (Sandbox Code Playgroud)

我知道这个后缀定义了一个浮点值.但它是否有必要,是否有意义,使用这两者之间是否有任何性能差异,或者这只是视觉呈现,因此您可以快速定义值类型(例如,在这种情况下浮动)?

performance objective-c cgfloat ios

5
推荐指数
1
解决办法
1076
查看次数

我可以将相同的扩展名应用于许多类而无需复制粘贴吗?

假设我有CGFloat的这个扩展名

extension CGFloat {
    // common 
    public var thrice: CGFloat { return self * 3.0 }
    public var twice: CGFloat { return self * 2.0 }
    public var half: CGFloat { return self * 0.5 }
    public var third: CGFloat { return self / 3.0 }
    public var fourth: CGFloat { return self * 0.25 }
    public var sixth: CGFloat { return self / 6.0 }
    public var eighth: CGFloat { return self * 0.125 }
    public var twelfth: CGFloat …
Run Code Online (Sandbox Code Playgroud)

double cgfloat swift

5
推荐指数
1
解决办法
2403
查看次数

CGFloat和NSNumber之间的转换没有不必要的升级到Double

众所周知,CGFloat(在CoreGraphics,UIKit等中无处不在)可以是32位或64位浮点数,具体取决于处理器架构.

在C中,CGFloat它是一个typealias到floatdouble,在Swift则它被定义为struct CGFloat具有native属性(其是FloatDouble).

已经多次观察到NSNumber可以从被创建并转换为FloatDouble,但有从与存在不相似的转换CGFloat.一般建议(例如在Swift中将CGFloat转换为NSNumber)是通过转换Double

CGFloat <--> Double <--> NSNumber
Run Code Online (Sandbox Code Playgroud)

例:

let c1 = CGFloat(12.3)
let num = NSNumber(double: Double(c1))
let c2 = CGFloat(num.doubleValue)
Run Code Online (Sandbox Code Playgroud)

这很简单,也没有精确度.此外,大多数平台现在都是64位,然后CGFloat/Double 转换很简单,可能由编译器优化.

然而,这引起了我的好奇心,如果转换可以做到 无需促进CGFloatDouble32位平台.

可以使用构建配置语句(例如,应该使用条件编译来处理不同体系结构中CGFloat的差异吗?):

extension NSNumber {
    convenience init(cgFloatValue value : CGFloat) {
        #if arch(x86_64) || arch(arm64) …
Run Code Online (Sandbox Code Playgroud)

nsnumber cgfloat swift

5
推荐指数
1
解决办法
4501
查看次数

使用CGSizeMake和CGSize有什么区别?这个比那个好吗?

CGSize(width: 360, height: 480)并且CGSizeMake(360, 480)似乎有同样的效果.对另一个人更喜欢吗?有什么不同?

cgfloat ios cgsize swift

5
推荐指数
1
解决办法
2907
查看次数