2016-06-26 3 views
0

아래의 일부 빠른 코드는 모두 깨끗한 프로젝트이며 ObjC 코드가 작동하지만 신속한 코드는 아닙니까? 내가 볼 수있는 한 동일하지만 신속히 실패합니다. 이미지가 표시되지만 필터는 신속 하나인가되지 않고, 일부 ObjC 코드CALayer.compositingFilter는 ObjectiveC에서 작동하지만 신속하지는 않습니다.

에게 objC (OS X 10.11.3 스위프트 2.2 엑스 코드 7.3)

import Foundation 
import Cocoa 

class MyView : NSView { 
    let layer1 = CALayer() 
    let layer2 = CALayer() 
    let filter = CIFilter(name: "CILuminosityBlendMode") 

    override func awakeFromNib() { 

      wantsLayer = true 

      layer!.addSublayer(layer1) 

      if let imageRef = NSImage(named: "Back.jpg") 
      { 
       layer1.contents = imageRef 
       layer1.anchorPoint = CGPointMake(0, 0) 
       layer1.bounds = CGRectMake(0,0, imageRef.size.width, imageRef.size.height); 
      } 


      layer!.addSublayer(layer2) 
      if let imageRef = NSImage(named: "Front.jpg") 
      { 
       layer2.contents = imageRef 
       layer2.anchorPoint = CGPointMake(0, 0) 
       layer2.bounds = CGRectMake(0,0, imageRef.size.width, imageRef.size.height); 
      } 

      layerUsesCoreImageFilters = true 
      layer2.compositingFilter = [filter!] 

    } 

} 

에 MyView.h 파일을 잘 작동 당신의 신속한 예에서

#import <Foundation/Foundation.h> 
#import "MyView.H" 
#import <QuartzCore/QuartzCore.h> 

@implementation MyView 

- (void)awakeFromNib { 

    [self setWantsLayer:YES]; 

    backLayer = [CALayer layer]; 
    [self.layer addSublayer:backLayer]; 


    NSImage *nsimage = [NSImage imageNamed: @"Back.jpg"]; 
    backLayer.contents = nsimage; 
    backLayer.anchorPoint = CGPointMake(0, 0); 
    backLayer.bounds = CGRectMake(0,0, nsimage.size.width, nsimage.size.height); 


    frontLayer = [CALayer layer]; 
    [self.layer addSublayer:frontLayer]; 

    nsimage = [NSImage imageNamed: @"Front.jpg"]; 
    frontLayer.contents = nsimage; 
    frontLayer.anchorPoint = CGPointMake(0, 0); 
    frontLayer.bounds = CGRectMake(0,0, nsimage.size.width, nsimage.size.height); 

    [self setLayerUsesCoreImageFilters:YES]; 

    CIFilter* filter = [CIFilter filterWithName:@"CILuminosityBlendMode"]; 
    frontLayer.compositingFilter = filter; 
} 
@end 

답변

3

@interface MyView : NSView { 

    CALayer* backLayer; 
    CALayer* frontLayer; 

} 

과 MyView.m, 당신은 배열을 전달하고 있습니다. 마지막 줄을 layer2.compositingFilter = filter!으로 변경하십시오.

관련 문제