2015-07-09 6 views
8

ich Xcode aktualisiert 7 Beta 3.Fehler: Verwendung von ungelösten Bezeichner ‚kCGBlendModeMultiply‘

Und ich habe in einige Probleme laufen, kann ich nicht für auf SO Fragen zu finden scheinen.

Wenn ich meine Anwendung ausführen, bekomme ich 3 Fehler:

Use of unresolved identifier 'kCGBlendModeMultiply'

Use of unresolved identifier 'kCGLineCapRound'

Use of unresolved identifier 'kCGLineJoinMiter'

jedoch die 2 letzteren verschwinden, obwohl ich davon ausgehen, sie zeigen sich nach dem ersten befestigt ist (daher, warum ich es enthalten in diese Frage).

Ich habe in den Versionshinweisen nichts darüber gesehen, dass diese entfernt wurden? Also bin ich ein bisschen fest, was ich tun soll. Ich habe versucht, die Zeilen natürlich neu zu schreiben, aber die 3 Dinge, die ich benutzt habe, erscheinen nicht mehr als Optionen. Falls sie im aktuellen Swift 2.0 einfach weg sind, was kann ich stattdessen verwenden?

Hier ist der Code für den ersten Fehler.

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; 
} 

Hier ist der Code für die 2 letztgenannten Fehler:

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) 
    } 

Jede Hilfe wäre sehr dankbar! :)

Antwort

15

Dies sollte funktionieren:

CGContextSetBlendMode(ctx, CGBlendMode.Multiply) 

... oder auch nur dies:

CGContextSetBlendMode(ctx, .Multiply) 

Wenn Sie Ctrl-click auf CGContextSetBlendMode und dann aus seiner Erklärung Sprung (in gleicher Weise) zu Erklärung CGBlendMode dann werden Sie sehen:

enum CGBlendMode : Int32 { 

    /* Available in Mac OS X 10.4 & later. */ 
    case Normal 
    case Multiply 
    case Screen 
    case Overlay 

    // ... 
} 

Simila rly, die andere Zeile, die den Fehler erzeugt, sollte geändert werden in:

let strokingPath = CGPathCreateCopyByStrokingPath(layer.path, nil, 4, .Round, .Miter, 4) 
+0

Das hat perfekt funktioniert! Vielen Dank! – MLyck

Verwandte Themen