Ошибка: использование неразрешенного идентификатора 'kCGBlendModeMultiply'
Я недавно обновился до Xcode 7, бета 3.
И я столкнулся с некоторыми проблемами, я не могу найти какие-либо вопросы для SO.
Когда я запускаю свое приложение, я получаю 3 ошибки:
Использование неразрешенного идентификатора 'kCGBlendModeMultiply'
Использование неразрешенного идентификатора 'kCGLineCapRound'
Использование неразрешенного идентификатора 'kCGLineJoinMiter'
Однако два последних исчезают, хотя я предполагаю, что они появятся после исправления первого (поэтому я и включил его в этот вопрос).
Я не видел ничего в примечаниях к выпуску об их удалении? Так что я немного застрял в том, что делать. Конечно, я пытался переписать строки, но три вещи, которые я использовал, больше не отображаются в качестве параметров. Если они только что вышли в последней версии 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;
}
Вот код для двух последних ошибок:
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)
}
Любая помощь будет принята с благодарностью!:)
1 ответ
Это должно работать:
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
// ...
}
Аналогично, другая строка, которая вызывает ошибку, должна быть изменена на:
let strokingPath = CGPathCreateCopyByStrokingPath(layer.path, nil, 4, .Round, .Miter, 4)