【发布时间】:2013-04-02 10:27:13
【问题描述】:
我在相机叠加层上有一系列图像。当我单击按钮时,我需要使用相机视图拍摄一张叠加图像的快照。但是当我在设备中启动时出现以下错误。我搜索了一些无法得到答案的现有代码。
错误:
[UIImage length]: unrecognized selector sent to instance 0x1d53b6b0 2013-04-02 11:27:18.748
ARimage[1166:907] *** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[UIImage length]: unrecognized selector sent to instance 0x1d53b6b0'
数组叠加图代码:
NSArray *arrayOfImageFiles=[[NSArray alloc]initWithObjects:[UIImage imageNamed:@"img1.png"],
[UIImage imageNamed:@"img2.png"],
[UIImage imageNamed:@"img3.png"],
[UIImage imageNamed:@"img4.png"],
[UIImage imageNamed:@"img5.png"], nil];//array of images.
for(NSString * imageFileName in arrayOfImageFiles)//here you are getting string format but imageFileName is an image object
{
UIImage * overlay = [UIImage imageNamed: imageFileName];//here imageFileName is image simply give here UIImage * overlay=imageFileName;
if(overlay)
{
CGSize overlaySize = [overlay size];
[overlay drawInRect:CGRectMake(30 * xScaleFactor, 100 * yScaleFactor, overlaySize.width * xScaleFactor, overlaySize.height * yScaleFactor)];
} else {
NSLog( @"could not find an image named %@", imageFileName);
}
}
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
[self setStillImage:combinedImage];
UIGraphicsEndImageContext();
[[NSNotificationCenter defaultCenter] postNotificationName:kImageCapturedSuccessfully object:nil];
}];
}
为按钮点击捕获覆盖图像:
- (void)ButtonPressed {
[self captureStillImageWithOverlay:[NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],
[UIImage imageNamed:@"img2.png"],
[UIImage imageNamed:@"img3.png"],
[UIImage imageNamed:@"img4.png"],
[UIImage imageNamed:@"img5.png"], nil]];
}
图像显示在相机叠加视图中。当我单击按钮捕获叠加图像时,出现错误。
【问题讨论】:
-
一次检查这一张 UIImage * overlay = [UIImage imageNamed: imageFileName];在这个 imageFileName 从数组中获取但在数组中你已经将对象添加为图像。所以这里两次分配
-
@Sunny:我没听懂你。解释清楚
-
我已经编辑了你的代码,一旦检查过。
-
@Sunny: 添加 UIImage * overlay=imageFileName;而是 UIImage * overlay = [UIImage imageNamed: imageFileName];我说的对吗?
-
是的,这是正确的。
标签: ios objective-c arrays nsarray overlay