Проблема TTImageView - PullRequest
       7

Проблема TTImageView

0 голосов
/ 26 августа 2011

Я хочу отобразить некоторые TTImageView в TTScrollView.

- (UIView*)scrollView:(TTScrollView*)scrollView pageAtIndex:(NSInteger)pageIndex {

TTView* pageView = nil;
if (!pageView) {
    pageView = [[[TTView alloc] init] autorelease];
    pageView.backgroundColor = [UIColor clearColor];
    pageView.userInteractionEnabled = NO;
}

NSString *imagePath = [self.screenShotImgPath objectAtIndex:pageIndex];
TTImageView *imageView = [[[TTImageView alloc] initWithFrame:CGRectZero] autorelease];
imageView.autoresizesToImage = YES;
imageView.urlPath = imagePath;
imageView.backgroundColor = [UIColor clearColor];
imageView.delegate = self;


//here I need to rotate image
if (imageView.width > imageView.height){
    CGAffineTransform  tran = CGAffineTransformIdentity;
    CGSize             bnds = imageView.size;
    CGSize             bnds2 = imageView.size;
    bnds = [self swapWidthAndHeight:bnds];
    tran = CGAffineTransformMakeTranslation(0.0,bnds2.width);
    tran = CGAffineTransformRotate(tran, [self degreesToRadians:-90.0]);
    imageView.transform = tran;

}

//here I need to scale image view frame to fit image actual scale
CGFloat scale = imageView.width/imageView.height;
CGFloat scaledWidth = (scrollView.height - 20.f) * scale;
imageView.frame = CGRectMake((scrollView.width - scaledWidth)/2, 10.f, scaledWidth, scrollView.height - 20.f);
[pageView addSubview:imageView];
return pageView;
}

, но есть проблема: TTImageView загрузка изображения асинхронно.Так что вполне возможно, что когда код переходит к

 if (imageView.width > imageView.height){

этой строке, изображение не загружается.Таким образом, исключение брошено.

Поскольку представление изображения добавлено в

- (UIView*)scrollView:(TTScrollView*)scrollView pageAtIndex:(NSInteger)pageIndex {

, поэтому я не могу переместить приведенный ниже код поворота из этого метода

  if (imageView.width > imageView.height){
    CGAffineTransform  tran = CGAffineTransformIdentity;
    CGSize             bnds = imageView.size;
    CGSize             bnds2 = imageView.size;
    bnds = [self swapWidthAndHeight:bnds];
    tran = CGAffineTransformMakeTranslation(0.0,bnds2.width);
    tran = CGAffineTransformRotate(tran, [self degreesToRadians:-90.0]);
    imageView.transform = tran;
   }

Что я могу сделать длярешить эту проблему?

1 Ответ

3 голосов
/ 07 июня 2012

Вы можете добавить <TTImageViewDelegate> в ваш файл .h, а эту функцию - в .m:

#pragma mark TTImageViewDelegate
-(void) imageView:(TTImageView *)imageView didLoadImage:(UIImage *)image{      
    if (image){
        //do your logic
    }
}

Эта функция будет запущена после завершения загрузки изображения.

...