我正在创建一个具有渐变背景色的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/