草庐IT

swift - CGFloat 和 NSNumber 之间的转换,无需不必要地提升为 Double

众所周知,CGFloat(在CoreGraphics、UIKit等中无处不在)可以是32位或64位float,具体取决于处理器架构。在C中,CGFloat它是一个类型别名到float或double,在Swift中它被定义为一个structCGFloat与native属性(即Float或Double)。已经反复观察到NSNumber可以从并转换为Float和Double,但不存在与CGFloat之间的类似转换。一般建议(例如在ConvertCGFloattoNSNumberinSwift中)是为了通过Double转换CGFloatDoubleNSNumber例子:letc1=CGFloa

xcode - 二元运算符 '..<' 不能应用于类型 'Int' 和 'CGFloat' 的操作数

我正在尝试创建一个for循环,但似乎无法理解如何消除此错误我的代码:fori:CGFloatin0..错误在self.frame.size.width和(movingGroundTexture.aize().width)上的for行上。 最佳答案 您不能创建CountableRange(或CountableClosedRange)与浮点类型。您要么想将您的2+self.frame.size.width/movingGroundTexture.size().width转换为Int:foriin0..或者你想使用stride(Swift

xcode - swift CGFloat 到 int xcode 6 beta 4

varw:Int=Int(self.bounds.size.width/Float(worldSize.width))varh:Int=Int(self.bounds.size.height/Float(worldSize.height))错误:“CGFloat不可转换为UInt8”我研究了这个转换类型,我找到了这个ConvertFloattoIntinSwift我的代码是这样的,但没有任何想法? 最佳答案 在beta4中,CGFloat成为了一种新的类型。所以你会这样做:varw:Int=Int(self.bounds.size.

iphone - 为什么在将 Float 转换为 CGFloat 时 Xcode 给我一个警告 "Cannot convert value of type ' CGFloat' to expected argument type 'UnsafeMutablePointer"?

我正在尝试将Float值转换为CGFloat值,这里是我的代码:letmyFloatForR=0letr=CGFloat(myFloatForR)letmyFloatForG=0letg=CGFloat(myFloatForG)letmyFloatForB=0letb=CGFloat(myFloatForB)letmyFloatForA=0leta=CGFloat(myFloatForA)tintColor.getRed(r,green:&g,blue:&b,alpha:&a)但Xcode突然给我一个警告说:“无法将类型'CGFloat'的值转换为“tintColor”行上的预期参数类

swift - 为什么 max 在 Swift 的 CGFloat 扩展中不起作用?

任何人都知道这是行不通的(静态成员min不能用于类型CGFloat的实例。在扩展中。extensionCGFloat{mutatingfuncnormalize(){self=min(max(CGFloat(0),self),CGFloat(1))}}虽然这行得通letf:CGFloat=CGFloat(0.4)letmaxValue=max(f,1) 最佳答案 您可以通过指定Swift.min和Swift.max来让它工作:extensionCGFloat{mutatingfuncnormalize(){self=Swift.mi

ios - 'CGFloat' 不可转换为 'Float' 及更多

我的应用中有更多问题。我的错误正如标题所说:Swift编译器错误。错误1:“CGFloat”不能转换为“Float”第一个和第二个错误的代码:self.setPositionRelativeBot(pipeBot,x:xx,y:offset)self.setPositionRelativeTop(pipeTop,x:xx,y:offset+space)这是整个函数:funcspawnPipeRow(offs:Float){letoffset=offs-space/2letpipeBot=mainPipe.copy()asPipeletpipeTop=mainPipe.copy()asP

ios - 替换 `fabs` 、 `fmax` 等,用于 64 位 iOS 设备上的 CGFloat

问题考虑这样的布局代码:CGFloatdescriptionHeight=//heightofaparagraphoftextwithzeroormorewords;CGFloatimageHeight=//heightofanimage;CGFloatyCoordinateOfSomeOtherView=fmax(descriptionHeight,imageHeight)+5.0f;第三行应该如何重写以支持64位iOS设备?(当前代码没有考虑yCoordinateOfSomeOtherView是float还是double。)选项几个选项(我不确定哪个最好):1。定义我自己的宏#if

ios - 如何舍入 CGFloat

我做了这个方法+(CGFloat)round:(CGFloat)f{inta=f;CGFloatb=a;returnb;}它按预期工作,但只是向下舍入。如果它是负数,它仍会向下舍入。这只是我制作的一个快速方法,它是否正确舍入并不是很重要,我只是为了我的游戏舍入相机的x和y值。这个方法可以吗?快吗?或者有更好的解决方案吗? 最佳答案 2018年答案这里的其他答案要么过时了,要么没有给出很好的例子。使用Swift内置的rounded函数可以很容易地对CGFloat进行舍入。letx:CGFloat=3.5lety=x.rounded()

ios - 尝试将 PanoramaGL 添加到静态库时出现未知类型名称 'CGFloat'

我尝试使用panoramaGL框架并将其添加到我的静态库中。所以我将它导入到项目中,添加了CoreGraphics框架,但是在PLStructs.h中有一个问题Unknowntypename'CGFloat'。当我Cmd+单击Xcode中的CGFloat-我转到CoreGraphics框架中的CGBase.h。尝试清理项目并替换框架-结果是一样的。等待您的帮助。 最佳答案 解决方法很简单:#import 关于ios-尝试将PanoramaGL添加到静态库时出现未知类型名称'CGFloat

ios - 基于 CGFloat 的数学函数?

在OSX和iOS中,Apple使用CGFloattypedef在32位系统上自动获取float,在64位系统上自动获取double。但是当使用普通的Unix数学函数时,你需要根据具体情况做出决定。例如floor()函数定义为:双层(doublex);floorf()函数定义为:floatfloatf(floatx);我知道所有iOS设备今天都是32位的,但是使用CGFloat的原因是在引入第一个64位iOS设备(iPad5?)时自动获得更高的精度,而不是必须更改任何代码。但要实现这一点,我们需要基于CGFloat的数学函数:CGFloatFloor(CGFloatx);iOS或第三方库