- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个具有渐变背景色的 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/
我是 Swift 新手,我正在尝试使用 CGGradient 创建背景渐变,但出现以下错误。 cannot convert value of type int to expected argument
我正在创建一个具有渐变背景色的 UILabel。唯一的问题是我收到一条错误消息,内容如下: “无法将类型 Int 的值转换为预期的参数类型 CGGradientDrawingOptions” 我想知道
这个问题在这里已经有了答案: No '|' candidates produce the expected contextual result type 'NSTextStorageEditActi
我是一名优秀的程序员,十分优秀!