2015-07-09 20 views
8

Gần đây tôi đã cập nhật để Xcode 7, beta 3.Lỗi: Sử dụng định danh chưa được giải quyết 'kCGBlendModeMultiply'

Và tôi đã gặp phải một số vấn đề, tôi dường như không thể tìm thấy bất kỳ câu hỏi cho trên SO.

Khi tôi chạy ứng dụng của tôi, tôi nhận được 3 lỗi:

Use of unresolved identifier 'kCGBlendModeMultiply'

Use of unresolved identifier 'kCGLineCapRound'

Use of unresolved identifier 'kCGLineJoinMiter'

Tuy nhiên, 2 người sau này, biến mất, mặc dù tôi cho rằng họ sẽ xuất hiện sau khi người đầu tiên là cố định (vì thế tại sao tôi đưa nó vào câu hỏi này).

Tôi không thấy bất kỳ điều gì trong ghi chú phát hành về những mục này bị xóa? Vì vậy, tôi là một chút khó khăn ở những gì để làm. Tôi đã cố gắng viết lại các dòng của khóa học, nhưng 3 điều tôi đã sử dụng không hiển thị như các tùy chọn nữa. Trong trường hợp họ vừa mới sử dụng Swift 2.0 mới nhất, tôi có thể sử dụng cái gì?

Đây là mã cho lỗi đầu tiên.

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

Dưới đây là đoạn code trong 2 lỗi sau:

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

Bất kỳ trợ giúp sẽ được đánh giá cao! :)

Trả lời

15

này nên làm việc:

CGContextSetBlendMode(ctx, CGBlendMode.Multiply) 

... hoặc thậm chí chỉ này:

CGContextSetBlendMode(ctx, .Multiply) 

Nếu bạn Ctrl-click trên CGContextSetBlendMode và sau đó từ nhảy khai của nó (theo cách tương tự) để khai báo của CGBlendMode thì bạn sẽ thấy:

enum CGBlendMode : Int32 { 

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

    // ... 
} 

Simila rly, dòng khác tạo lỗi nên được thay đổi thành:

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

Điều đó làm việc hoàn hảo! Cảm ơn rât nhiêu! – MLyck

Các vấn đề liên quan