2015-07-09 23 views
8
Geçenlerde Xcode 7 beta 3.

Hata: çözülmemiş tanımlayıcı kullanımı 'kCGBlendModeMultiply'

Ve biraz sorunları çalıştırmak güncellendi

, SO üzerinde herhangi bir soru bulmak gibi olamaz. İlk kurşunun giderildikten sonra ben bunu dahil neden dolayısıyla (görünecektir varsayalım rağmen, Ancak 2 ikinci olanlar

Use of unresolved identifier 'kCGBlendModeMultiply'

Use of unresolved identifier 'kCGLineCapRound'

Use of unresolved identifier 'kCGLineJoinMiter'

kaybolur: Başvurumu çalıştırdığınızda

i 3 hataları olsun bu soru).

Bu kaldırılmalarla ilgili sürüm notlarında hiçbir şey görmedim? Bu yüzden ne yapmam gerektiği konusunda takılıyorum. Elbette satırları yeniden yazmayı denedim, ancak kullandığım 3 şey artık seçenek olarak görünmüyor. En son Swift 2.0'da yeni gittikleri takdirde, bunun yerine ne kullanabilirim?

İşte ilk hatanın kodu.

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

Herhangi bir yardım büyük takdir:

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

Burada 2 ikincisi hatalar için kod! :)

cevap

15

Bu çalışması gerekir: hatta

CGContextSetBlendMode(ctx, CGBlendMode.Multiply) 

... ya da sadece bu:

CGContextSetBlendMode(ctx, .Multiply) 

Eğer CGContextSetBlendMode üzerinde Ctrl-click ve daha sonra beyan atlama dan (aynı şekilde) için CGBlendMode beyanı o zaman göreceksiniz:

enum CGBlendMode : Int32 { 

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

    // ... 
} 

Simila rly, hatayı üreten diğer satır aşağıdaki gibi değiştirilmelidir:

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

Mükemmel çalıştı! Çok teşekkür ederim! – MLyck

İlgili konular