gpt4 book ai didi

swift - 无法将 int 类型的值转换为预期的参数类型 CGGradientDrawingOptions

转载 作者:行者123 更新时间:2023-11-30 13:33:32 24 4
gpt4 key购买 nike

我是 Swift 新手,我正在尝试使用 CGGradient 创建背景渐变,但出现以下错误。

cannot convert value of type int to expected argument type CGGradientDrawingOptions

我不明白为什么我不应该在这里使用 int 。任何帮助将不胜感激。

override func viewDidLoad() {
super.viewDidLoad()
var currentContext = UIGraphicsGetCurrentContext()
CGContextSaveGState(currentContext);
var colorSpace = CGColorSpaceCreateDeviceRGB()

var topColor = UIColor(red: (57/255.0), green: (150/255.0), blue: (199/255.0), alpha: 1)
var startColorComponents = CGColorGetComponents(topColor.CGColor)

var middleColor = UIColor(red: (90/255.0), green: (60/255.0), blue: (117/255.0), alpha: 0.85)
var middleColorComponents = CGColorGetComponents(middleColor.CGColor)

var bottomColor = UIColor(red: (215/255.0), green: (109/255.0), blue: (109/255.0), alpha: 1)
var endColorComponents = CGColorGetComponents(bottomColor.CGColor)

var colorComponents
= [startColorComponents[0], startColorComponents[1], startColorComponents[2], startColorComponents[3],
middleColorComponents[0], middleColorComponents[1], middleColorComponents[2], middleColorComponents[3],
endColorComponents[0], endColorComponents[1], endColorComponents[2], endColorComponents[3]
]

var locations:[CGFloat] = [0.0, 0.35, 1.0]

var gradient = CGGradientCreateWithColorComponents(colorSpace,&colorComponents,&locations,3)

var startPoint = CGPointMake(-0.3, 0.1)
var endPoint = CGPointMake(0.2, 1.3)

CGContextDrawLinearGradient(currentContext,gradient,startPoint,endPoint, 0)

CGContextRestoreGState(currentContext);

}

最佳答案

我假设您在以下行中收到错误:

CGContextDrawLinearGradient(currentContext,gradient,startPoint,endPoint, 0)

这里的问题是您传递 0(整数)的最后一个参数。

该例程的声明是:

public func CGContextDrawLinearGradient(c: CGContext?, 
_ gradient: CGGradient?,
_ startPoint: CGPoint,
_ endPoint: CGPoint,
_ options: CGGradientDrawingOptions)

在 Objective-C 中,CGGradientDrawingOptions 类型是一个整数值,其中 0 表示没有选项。在 Swift 中,绘图选项被声明为 OptionSetType 类型的 enum。编译器会提示,因为它需要的是这个枚举而不是整数。

在 Swift 中指定这些选项的方式看起来像一个数组,或者包含枚举中的元素的集合。因此,如果您想要同时使用 DrawsBeforeStartLocation 选项和 DrawsAfterEndLocation,您可以这样写:

CGContextDrawLinearGradient(someContext, 
<other arguments here>
[.DrawsBeforeStartLocation, .DrawsAfterEndLocation])

在您的特定情况下,您不需要任何一个选项,因此只需传递一个空选项集:

 CGContextDrawLinearGradient(currentContext,gradient,startPoint,endPoint, [])

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com