Swift中的CGGradientDrawingOptions错误?
我正在创建一个具有渐变背景色的Swift中的CGGradientDrawingOptions错误?,swift,label,cgpoint,Swift,Label,Cgpoint,我正在创建一个具有渐变背景色的UILabel。唯一的问题是我收到一条错误消息,上面说: “无法将Int类型的值转换为预期的参数类型CGGradientDrawingOptions” 我想知道这是因为一个简单的语法错误,还是我需要从代码中添加或删除一些东西。请告诉我我需要在您的答案中添加、删除或修复什么,以及错误的含义。以下是所有代码: import UIKit @IBDesignable class PHLabel: UILabel { @IBInspectable var startCol
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开始) 在您的情况下,零值是[]。如果要使用选项,可以键入如下内容:
let opts: CGGradientDrawingOptions = [
.DrawsBeforeStartLocation,
.DrawsAfterEndLocation
]
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, opts)
正如马丁.R。如上所述,您也可以使用CGGradientDrawingOptions(rawValue:0),但它不适合您的情况。SWIFT 2.0
在swift 2中使用,如下所示。jsut键入点并选择选项。
CGContextDrawLinearGradient(上下文、渐变、起始点、端点、.DrawsAfterEndLocation)第一次在谷歌上点击“CGContextDrawLinearGradient swift 2”,建议将CGGradientDrawingOptions(rawValue:0)或干脆
[]
作为选项参数的解决方案。另请参见。是否有一个简单的修复程序可以用来代替0?您可以用[]替换0。CGContextDrawLinearGradient(上下文、渐变、起点、终点、[])成功了,谢谢。但还有一个问题,如何向这个标签添加文本?UILabel有一个文本属性。您必须在drawRect方法中绘制此字符串。某物为(self.string为?NSString)?.drawInRect。。。您也可以使用attributedText属性而不是text属性。我犯了一个错误。它不是(self.string作为?NSString)而是(self.text作为?NSString)这里列出了绘制NSString的所有方法:
let opts: CGGradientDrawingOptions = [
.DrawsBeforeStartLocation,
.DrawsAfterEndLocation
]
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, opts)