我有两个UIImages的NSMutablearrays相互叠加。当两个阵列中存在均匀数量的图像时,我的代码可以正常工作。但是,当它们不相等时,我得到一个越界错误。
我要做的是基本上采用overlayImg数组的第一个对象并“复制”它以匹配另一个数组的编号。这是我到目前为止所得到的。
-(void)ViewDidLoad
{
_overlayImg = [[NSMutableArray alloc] init];
if (self.record.imagebackground) {
NSArray *array = [[NSKeyedUnarchiver unarchiveObjectWithData:self.record.imagebackground] mutableCopy];
for(UIImage* image1 in array) {
NSData *imageData1 = [NSData dataWithData:UIImagePNGRepresentation(image1)];
[_overlayImg addObject:imageData1];
}
-(void)final
for (int i = 0; i < self.arrSlidshowImg.count; i++)
{
if (self.arrSlidshowImg.count == _overlayImg.count)
{
_arrayImage = [UIImage imageWithData:[_overlayImg objectAtIndex:i]];
_flippedImage = [UIImage imageWithData:[_arrSlidshowImg objectAtIndex:i]];
[self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_gifoverlayImg objectAtIndex:i]];
}
else
{
_arrayImage = [UIImage imageWithData:[_overlayImg objectAtIndex:i]];
_flippedImage = [UIImage imageWithData:[_arrSlidshowImg objectAtIndex:i]];
[self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_overlayImg firstObject]];
}
}
答案 0 :(得分:0)
我很难理解你要做什么,但如果你在最后一个方法中尝试做的是填满arrSlideshowImg中的任何空白区域,那么你正在进行的计数比较只是确保两个阵列中的项目数相同。你应该做的是比较索引i。如果数组中有多个,那么也不要访问_overlayImg。这可能会给你带来越界错误。尝试这样的事情:
-(void)final
for (int i = 0; i < self.arrSlidshowImg.count; i++)
{
if (i < _overlayImg.count)
{
_arrayImage = [UIImage imageWithData:[_overlayImg objectAtIndex:i]];
_flippedImage = [UIImage imageWithData:[_arrSlidshowImg objectAtIndex:i]];
[self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_gifoverlayImg objectAtIndex:i]];
}
else
{
[self makedesignWithImageData:[_arrSlidshowImg objectAtIndex:i] andWatermarkData:[_overlayImg firstObject]];
}
}