UIImageView不会更新

时间:2011-02-24 05:50:32

标签: iphone image uiimageview

我的UIImageView无法更新。 所以,就像这样: 我有一个UIScrollView包含一个UIImageView(称为imageView)。 现在,imageView应该包含更多的UIImageViews。我从代码添加的那些UIImageViews但它们没有出现。

这是代码:

    for(i = 0 ; i < NrOfTilesPerHeight ; i++)
    for(j = 0 ; j < NrOfTilesPerWidth ; j++)
    {               
         imageRect = CGRectMake(j*TILE_WIDTH,i*TILE_HEIGHT,TILE_WIDTH, TILE_HEIGHT);
         image = CGImageCreateWithImageInRect(aux.CGImage, imageRect);

         if(!data[i][j])
        NSLog(@"data[%d][%d] is nil",i,j);

         context = CGBitmapContextCreate (data[i][j], TILE_WIDTH, TILE_HEIGHT, 
                         bitsPerComponent, bitmapBytesPerRow, colorSpace,
                         kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

         if (context == NULL)  
         {
          free (data);
          printf ("Context not created!");
          CGColorSpaceRelease( colorSpace );
         }

         CGContextDrawImage(context, CGRectMake(0, 0, TILE_WIDTH, TILE_HEIGHT), image);

         data[i][j] = CGBitmapContextGetData (context);
         memcpy(originalData[i][j],data[i][j],TILE_WIDTH*TILE_HEIGHT*numberOfCompponents);

         CGContextFlush(context);

         CGImageRelease(image);

         UIImageView *imgView = [[UIImageView alloc] init];
         [imgView setTag:i*10+j];

         CGRect frame = imgView.frame;
         frame.origin.x = j * (TILE_WIDTH+5)  * initialScale;
         frame.origin.y = i * (TILE_HEIGHT+5) * initialScale;
         frame.size.width  *= initialScale;
         frame.size.height *= initialScale;

         [imgView setFrame:frame];

         [imageView addSubview:imgView];

         [self updateTileAtLine:i andRow:j];

         [imgView release];
         CGDataProviderRelease(dataProvider);
         CGImageRelease(cgImage);        
    }



- (void) updateTileAtLine: (int) i andRow: (int) j
{           
    CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, data[i][j], bitmapByteCount, NULL);

    CGImageRef cgImage = CGImageCreate(TILE_WIDTH, TILE_HEIGHT, bitsPerComponent,
               bitsPerPixel, bitmapBytesPerRow, colorSpace,           kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big, dataProvider, NULL, false,  kCGRenderingIntentDefault);

    UIImage *myImg = [UIImage imageWithCGImage:cgImage];
    UIImageView *auxImageView = (UIImageView*) [imageView viewWithTag:(i*10+j)];
    [auxImageView setImage:myImg];

    CGDataProviderRelease(dataProvider);
    CGImageRelease(cgImage);
}

现在......这不会崩溃......所以一切都是非零的,没问题。 如果不是使用viewWithTag,我会为init分配一个新的UIImageView并将其添加到imageView,它会出现。但是我不想再做一个视图副本,因为这个updateTile方法会经常被调用。

我的问题是:为什么不出现auxImageView?非常应该。

谢谢。

此致 乔治

1 个答案:

答案 0 :(得分:1)

试试这个

for(UIView *view in [imageView subviews]) {
if(view.tag == i*10+j) {

UIImageView *auxImageView = (UIImageView*) view;
[auxImageView setImage:myImg];
}

}