我想交叉淡化两个NSViews并调整它们的大小NSWindow.我知道如何单独进行,但到目前为止还不知道如何同时进行.我想我需要CAAnimationGroup它.但是因为我正在处理两个不同的对象,我不知道如何在组中添加两个动画,我不知道如何启动动画,因为我无法同时调用animator它们.
我第一次尝试使用Core Image(OS X,10.7.3)并且遇到了一堵砖墙.我确定这是我正在做的傻事,只需要更熟悉框架的人向我指出.
请考虑以下代码(让我们规定这imageURL是一个指向磁盘上JPG的有效文件URL):
CIImage *inputImage = [CIImage imageWithContentsOfURL:imageURL];
CIFilter *filter = [CIFilter filterWithName:@"CIAreaAverage" keysAndValues:
kCIInputImageKey, inputImage,
kCIInputExtentKey, [inputImage valueForKey:@"extent"],
nil];
CIImage *outputImage = (CIImage *)[filter valueForKey:@"outputImage"];
Run Code Online (Sandbox Code Playgroud)
运行此代码时,最后一行触发:
0 CoreFoundation 0x00007fff96c2efc6 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff9153cd5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff96cbb2ae -[NSObject doesNotRecognizeSelector:] + 190
3 CoreFoundation 0x00007fff96c1be73 ___forwarding___ + 371
4 CoreFoundation 0x00007fff96c1bc88 _CF_forwarding_prep_0 + 232
5 CoreImage 0x00007fff8f03c38d -[CIAreaAverage outputImage] + 52
6 Foundation 0x00007fff991d8384 _NSGetUsingKeyValueGetter + 62
7 Foundation 0x00007fff991d8339 -[NSObject(NSKeyValueCoding) valueForKey:] + …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用GCD一个接一个地放置图像,如下所示
-(void)setUpImages {
NSArray *images = @[[UIImage imageNamed:@"blogger-icon.png"],
[UIImage imageNamed:@"gplus-icon.png"],
[UIImage imageNamed:@"facebok-icon.png"]
];
[images enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
dispatch_sync(dispatch_get_main_queue(), ^{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(80, idx * ((UIImage*)obj).size.height + idx*30 + 10, ((UIImage*)obj).size.width, ((UIImage*)obj).size.height)];
NSLog(@"index is %@",NSStringFromCGRect(imageView.frame));
[imageView setImage:(UIImage*)obj];
[self.view.layer addSublayer:imageView.layer];
sleep(1);
});
}];
}
Run Code Online (Sandbox Code Playgroud)
我正在使用,dispatch_sync因为我希望它会等到它的块完成(第一个图像放在屏幕上)然后第二个图像将是,所以第三个图像.现在所有的事情都发生在主线上.
但是,似乎我在中间遇到了僵局,我的逻辑在某些方面是错误的.
我需要帮助来了解这种情况.请帮忙.