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