Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift中的CGGradientDrawingOptions错误?_Swift_Label_Cgpoint - Fatal编程技术网

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)