我已经成功地将许多错误转换为Swift 3,除了最后一行。它适用于Xcode 7,但不适用于Xcode 8.Xcode 8/Swift 3 - 类型'CGColorRenderingIntent'没有成员'RenderingIntentDefault'
值得一提的是,Xcode 7在CGColorRenderingIntent
上有文档,但Xcode 8没有。
类型 'CGColorRenderingIntent' 没有成员 'RenderingIntentDefault'
代码我的工作:
import CoreImage
// omitted code
public func imageFromPixels(pixels: ([Pixel], width: Int, height: Int)) -> CIImage {
let bitsPerComponent = 8
let bitsPerPixel = 32
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue) // alpha is last
let providerRef = CGDataProvider(data: NSData(bytes: pixels.0, length: pixels.0.count * sizeof(Pixel)))
let image = CGImageCreate(pixels.1, pixels.2, bitsPerComponent, bitsPerPixel, pixels.1 * sizeof(Pixel), rgbColorSpace, bitmapInfo, providerRef!, nil, true, CGColorRenderingIntent.RenderingIntentDefault)
return CIImage(CGImage: image!)
}
苹果文档:
enum CGColorRenderingIntent : Int32 {
case RenderingIntentDefault
case RenderingIntentAbsoluteColorimetric
case RenderingIntentRelativeColorimetric
case RenderingIntentPerceptual
case RenderingIntentSaturation
}
更新的代码:
在符号let image = CGImage(width: pixels.1,
height: pixels.2,
bitsPerComponent: bitsPerComponent,
bitsPerPixel: bitsPerPixel,
bytesPerRow: pixels.1 * sizeof(Pixel),
space: rgbColorSpace,
bitmapInfo: bitmapInfo,
provider: providerRef!,
decode: nil,
shouldInterpolate: true,
intent: .defaultIntent)
return CGImage(CGImage: image!) // Incorrect argument label in call (have 'CGImage:', expected 'copy:')
Typo:'return CIImage(cgImage:...'with ** I ** – vadian
无论你在看什么样的文档都是旧的,如果你google了一个符号并找到你的方式去找一个以developer.apple开头的URL .com/library /,你在运行操作系统和Swift 2的文档。该枚举的Swift 3/Xcode 8 /相关OS测试文档是[here](https://developer.apple.com/reference/) coregraphics/cgcolorrenderingintent) – rickster
是的,这只是我返回的类型,主要的问题是找到'CGColorRenderingIntent'枚举的案例名称,我总是通过cmd单击我遇到的任何问题,但由于某种原因,我的Xcode 8只给了我'灰色问号'或者'没有文档'的信息,我很惊讶这个版本甚至作为一个测试版发布,因为每次我改变了一些东西,需要10秒钟才能更新错误。它似乎每隔30秒建立一次正确显示我所有的错误。每隔几秒钟,我的颜色编码也会消失。 – tymac