xcode - tools - Error: uso del identificador no resuelto ''kCGBlendModeMultiply''
xcode online (1)
Recientemente actualicé a Xcode 7, beta 3.
Y me he encontrado con algunos problemas, parece que no puedo encontrar ninguna pregunta para SO.
Cuando ejecuto mi aplicación, obtengo 3 errores:
Uso del identificador no resuelto ''kCGBlendModeMultiply''
Uso del identificador no resuelto ''kCGLineCapRound''
Uso del identificador no resuelto ''kCGLineJoinMiter''
Sin embargo, los 2 últimos desaparecen, aunque supongo que aparecerán después de que el primero haya sido reparado (de ahí que lo haya incluido en esta pregunta).
¿No vi nada en las notas de la versión acerca de que se eliminen? Así que estoy un poco atascado en qué hacer. Traté de reescribir las líneas, por supuesto, pero las 3 cosas que utilicé ya no aparecen como opciones. En caso de que desaparezcan en el último Swift 2.0, ¿qué puedo usar en su lugar?
Aquí está el código para el primer error.
func alpha(value:CGFloat)->UIImage
{
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)
let ctx = UIGraphicsGetCurrentContext()
let area = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -area.size.height)
CGContextSetBlendMode(ctx, kCGBlendModeMultiply)
CGContextSetAlpha(ctx, value)
CGContextDrawImage(ctx, area, self.CGImage)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage;
}
Aquí está el código para los 2 últimos errores:
for layer in [ self.top, self.middle, self.bottom ] {
layer.fillColor = nil
layer.strokeColor = UIColor.whiteColor().CGColor
layer.lineWidth = 4
layer.miterLimit = 4
layer.lineCap = kCALineCapRound
layer.masksToBounds = true
let strokingPath = CGPathCreateCopyByStrokingPath(layer.path, nil, 4, kCGLineCapRound, kCGLineJoinMiter, 4)
layer.bounds = CGPathGetPathBoundingBox(strokingPath)
layer.actions = [
"strokeStart": NSNull(),
"strokeEnd": NSNull(),
"transform": NSNull()
]
self.layer.addSublayer(layer)
}
¡Cualquier ayuda sería muy apreciada! :)
Esto debería funcionar:
CGContextSetBlendMode(ctx, CGBlendMode.Multiply)
... o incluso solo esto:
CGContextSetBlendMode(ctx, .Multiply)
Si hace Ctrl-click
en CGContextSetBlendMode
y luego desde su declaración salta (de la misma manera) a la declaración de CGBlendMode
entonces verá:
enum CGBlendMode : Int32 {
/* Available in Mac OS X 10.4 & later. */
case Normal
case Multiply
case Screen
case Overlay
// ...
}
Del mismo modo, la otra línea que produce el error debe cambiarse a:
let strokingPath = CGPathCreateCopyByStrokingPath(layer.path, nil, 4, .Round, .Miter, 4)