swift - 无法将 Double 转换为预期的参数类型 CGFloat

标签 swift quartz-core

如何将此函数转换为 swift?我收到一个我不明白的错误。你需要在你的类里面“导入 QuartzCore”。

objective-c 代码

void DrawGridlines(CGContextRef context, CGFloat x, CGFloat width)
{
    for (CGFloat y = -48.5; y <= 48.5; y += 16.0)
    {
        CGContextMoveToPoint(context, x, y);
        CGContextAddLineToPoint(context, x + width, y);
    }
    CGContextSetStrokeColorWithColor(context, graphLineColor());
    CGContextStrokePath(context);
}

快速代码

func DrawGridLines(context:CGContextRef, x:CGFloat, width:CGFloat)
{
    for var y = -48.5; y <= 48.5; y += 16.0
    {
        CGContextMoveToPoint(context, x, y);
        CGContextAddLineToPoint(context, x + width, y);
    }
    //CGContextSetStrokeColorWithColor(context, graphLineColor());
    //CGContextStrokePath(context);
}

最佳答案

Swift 对变量类型非常严格。由于您没有给 y 一个类型,Swift 推断它是一个 Double

变量 y 需要是一个 CGFloat 因为它传递给的函数原型(prototype)是 func CGContextMoveToPoint(c: CGContext?, _ x: CGFloat, _ y: CGFloat)。您可以在 for 语句中内联声明类型:

for var y:CGFloat = -48.5; y <= 48.5; y += 16.0

关于swift - 无法将 Double 转换为预期的参数类型 CGFloat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059005/

相关文章:

ios - Swift 中的惰性函数

iOS 在给定角度和半径的情况下以编程方式创建圆形扇区的 UIImage

ios - 单一 View iOS 上的多个投影

ios - 自定义 CALayer 子类未显示

swift - 是否可以使用 CoreML 模型检测对象并找到该对象的测量值?

object - Swift 结构体是对象吗?

iphone - 用 QuartzCore 制作边框很慢?

ios - 当我将 CALayer I 添加到自定义 UIView 时,我隐藏了一个子 UIImageView

ios - authorizationStatus 返回一个 bool 值

swift - 如何获取 customTableViewCell 中 UITextField 的字符串并将其保存到 coreData?