Xcode 8 / Swift 3 - 类型'CGColorRenderingIntent'没有成员'RenderingIntentDefault'

时间:2016-06-19 20:55:30

标签: swift swift3 xcode8

除了最后一行之外,我已成功将许多错误转换为Swift 3。它适用于Xcode 7但不适用于Xcode 8。

值得注意的是,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!)
}

Apple文档:

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:')

1 个答案:

答案 0 :(得分:4)

在符号CGColorRenderingIntent

⌘-点击,您会看到

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的初始值设定项也已更改。