2016-06-19 35 views
0

我已经成功地将许多错误转换为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:') 
+0

Typo:'return CIImage(cgImage:...'with ** I ** – vadian

+0

无论你在看什么样的文档都是旧的,如果你google了一个符号并找到你的方式去找一个以developer.apple开头的URL .com/library /,你在运行操作系统和Swift 2的文档。该枚举的Swift 3/Xcode 8 /相关OS测试文档是[here](https://developer.apple.com/reference/) coregraphics/cgcolorrenderingintent) – rickster

+0

是的,这只是我返回的类型,主要的问题是找到'CGColorRenderingIntent'枚举的案例名称,我总是通过cmd单击我遇到的任何问题,但由于某种原因,我的Xcode 8只给了我'灰色问号'或者'没有文档'的信息,我很惊讶这个版本甚至作为一个测试版发布,因为每次我改变了一些东西,需要10秒钟才能更新错误。它似乎每隔30秒建立一次正确显示我所有的错误。每隔几秒钟,我的颜色编码也会消失。 – tymac

回答

4

⌘单击,你会看到

public enum CGColorRenderingIntent : Int32 { 

    case defaultIntent 
    case absoluteColorimetric 
    case relativeColorimetric 
    case perceptual 
    case saturation 
} 

所以这是

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 CIImage(cgImage: image!) 

CGImageCIImage连初始化已更改。

+0

嗨。我只是更新了我的问题,说在Xcode 8中,common-click不起作用于'CGColorRenderingIntent'。至少对我来说不是。我只是得到一个问号。 http://imgur.com/kjLECld。即使我发现CGImage出现错误,就像你说的自动完成只给了我CGImage一样。是我的Xcode搞砸了吗? Xcode 7也是开放的。这是造成问题吗?另外Xcode 8非常慢是更新错误。像10秒。 – tymac

+0

我更新了答案。实际上编译器应该给你建议做什么(它在我的机器上)。我不希望同时运行两个Xcode版本。 – vadian

+0

是的,我看到了,对不起。最后一个'CIImage'给了我。谢谢。好吧,现在是零错误。唯一的问题是图像跟踪器不运行哈哈。哇。这是它应该看起来像什么。 http://i.imgur.com/vSulmar.png。但Xcode 8只是空白。这真是一个耻辱,因为我想把它放在iOS 10 Playground中。好吧。谢谢你的帮助。 – tymac

相关问题