2015-07-09 2 views
8

Я недавно обновлен до Xcode 7, бета 3.Ошибка: Использование неразрешенного идентификатора «kCGBlendModeMultiply»

И я столкнулся с некоторыми проблемами, я не могу найти какие-либо вопросы по SO.

Когда я запускаю мое приложение, я получаю 3 ошибки:

Use of unresolved identifier 'kCGBlendModeMultiply'

Use of unresolved identifier 'kCGLineCapRound'

Use of unresolved identifier 'kCGLineJoinMiter'

Однако 2 Последние, исчезают, хотя я предполагаю, что они будут отображаться после того, как первый один фиксирована (следовательно, почему я включил его в этот вопрос).

Я ничего не видел в примечаниях к выпуску об их удалении? Поэтому я немного застрял в том, что делать. Я попытался переписать строки, конечно, но три вещи, которые я использовал, больше не отображаются. В случае, если они просто исчезли в последнем Swift 2.0, что я могу использовать вместо этого?

- код, обозначающий при первой ошибке.

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

Вот код для 2-х последних ошибок:

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

Любая помощь будет принята с благодарностью! :)

ответ

15

Это должно работать:

CGContextSetBlendMode(ctx, CGBlendMode.Multiply) 

... или даже просто так:

CGContextSetBlendMode(ctx, .Multiply) 

Если вы Ctrl-click на CGContextSetBlendMode, а затем из его декларации прыжком (таким же образом) к декларация CGBlendMode, то вы увидите:

enum CGBlendMode : Int32 { 

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

    // ... 
} 

Simila rire, другая линия, которая производит ошибку, должна быть изменена на:

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

Это сработало отлично! Спасибо, много! – MLyck

Смежные вопросы