CGGradientDrawingOptions

CGGradientDrawingOptions

我正在创建一个具有渐变背景色的UILabel。唯一的问题是我收到一条错误消息,上面说:
“无法将类型Int的值转换为所需的参数类型CGGradientDrawingOptions”
我想知道这是因为一个简单的语法错误,还是我需要添加或删除我的代码。请告诉我,我需要在您的答案中添加、删除或修复什么,以及错误的含义。以下是所有代码:

import UIKit

@IBDesignable class PHLabel: UILabel {

@IBInspectable var startColor: UIColor = UIColor.greenColor()
@IBInspectable var endColor: UIColor = UIColor.greenColor()

override func drawRect(rect: CGRect) {

let context = UIGraphicsGetCurrentContext()
let colors = [startColor.CGColor, endColor.CGColor]

let colorSpace = CGColorSpaceCreateDeviceRGB()

let colorLocations:[CGFloat] = [0.0, 1.0]

let gradient = CGGradientCreateWithColors(colorSpace, colors, colorLocations)

var startPoint = CGPoint.zero
var endPoint = CGPoint(x:0, y:self.bounds.height)
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)
}
}

任何建议或意见都非常感谢。
提前谢谢。

最佳答案

CGGradientDrawingOptions是一个optionSetType,不能从int隐式转换(因为swift 2)。

struct CGGradientDrawingOptions : OptionSetType {
      init(rawValue rawValue: UInt32)
      static var DrawsBeforeStartLocation: CGGradientDrawingOptions { get }
      static var DrawsAfterEndLocation: CGGradientDrawingOptions { get }
}

在您的情况下,零值是[]。如果要使用选项,可以键入以下内容:
let opts: CGGradientDrawingOptions = [
    .DrawsBeforeStartLocation,
    .DrawsAfterEndLocation
]
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, opts)

正如martin.r.在上面所说,您也可以使用cggradientdrawingoptions(rawvalue:0),但它不适合您的情况。

关于swift - Swift中的CGGradientDrawingOptions错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35025726/

10-10 13:29