首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将int类型的值转换为预期的参数类型CGGradientDrawingOptions

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

Stack Overflow用户
提问于 2016-03-31 03:28:55
回答 1查看 1.2K关注 0票数 0

我是Swift的新手,我正在尝试使用CGGradient创建背景梯度,但是我得到了以下错误。

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

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

代码语言:javascript
复制
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);

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-31 04:42:57

我假设您在一行中得到了一个错误,即:

代码语言:javascript
复制
CGContextDrawLinearGradient(currentContext,gradient,startPoint,endPoint, 0)

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

这个例程的声明是:

代码语言:javascript
复制
public func CGContextDrawLinearGradient(c: CGContext?, 
    _ gradient: CGGradient?, 
    _ startPoint: CGPoint, 
    _ endPoint: CGPoint, 
    _ options: CGGradientDrawingOptions)

在Objective中,CGGradientDrawingOptions类型是一个整数值的东西,其中0表示没有选项.在Swift中,绘图选项被声明为enum类型的OptionSetType。编译器抱怨是因为它期望的是这个枚举,而不是一个整数。

在Swift中指定这些选项的方式看起来像一个数组,或包含来自枚举的元素的集合。因此,如果希望同时使用DrawsBeforeStartLocation选项和DrawsAfterEndLocation,则需要编写:

代码语言:javascript
复制
CGContextDrawLinearGradient(someContext, 
   <other arguments here>
    [.DrawsBeforeStartLocation, .DrawsAfterEndLocation])

在特定情况下,您不需要这两个选项,所以只需传递一个空选项集:

代码语言:javascript
复制
 CGContextDrawLinearGradient(currentContext,gradient,startPoint,endPoint, [])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36323615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档