TTPhotoViewController 在不同interfaceOrientation下的显示问题

 

http://blog.csdn.net/gavinming/article/details/6756769

        最近在使用Three20库进行开发,并使用了TTPhotoViewController 来显示照片,不清楚大家是否遇到过我这样的问题:直接TTPhotoViewController ,使用在竖屏的时候,图片显示是错误了,此时图片上自动放大,且经常会显示到其他页的图片;而在横屏的情况下是正确的。

        参考了网上一些解决方法:将TTPhotoView.m的- (void)setImage:(UIImage*)image函数中的UIViewContentModeScaleAspectFill改为UIViewContentModeScaleAspectFit,依照该方法修改后,此时发现竖屏是正确的,但是横屏确显示的是小图,无法满屏显示。

       由此得出,在不同的interfaceOrientation下,需设置不同的contentmode。因此经过实验,修改代码如下:

TTPhotoViewController .m

增加函数:updatePhotoViewContentMode:(UIInterfaceOrientation)interfaceOrientation

  1. ///   
  2. - (void)updatePhotoViewContentMode:(UIInterfaceOrientation)interfaceOrientation  
  3. {  
  4.     TTPhotoView* centerPhotoView = self.centerPhotoView;  
  5.     UIViewContentMode currentContentMode;  
  6.     if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {  
  7.         currentContentMode = UIViewContentModeScaleAspectFill;  
  8.     }  
  9.     else{  
  10.         currentContentMode = UIViewContentModeScaleAspectFit;  
  11.     }  
  12.     //先设置非当前view到contentMode,防止旋转时,会看到非centerPhotoview   
  13.     for (TTPhotoView* photoView in _scrollView.visiblePages.objectEnumerator) {  
  14.         if (centerPhotoView == photoView)  
  15.             break;  
  16.         photoView.contentMode = currentContentMode;  
  17.     }  
  18.     centerPhotoView.contentMode = currentContentMode;  
  19. }  

修改代码:

  1. ///   
  2. - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation  
  3.                                          duration:(NSTimeInterval)duration {  
  4.   [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];  
  5.   [self updateToolbarWithOrientation:toInterfaceOrientation];  
  6.  <span style="color:#ff0000;"> </span>[self updatePhotoViewContentMode:toInterfaceOrientation];  
  7. }  

  1. ///   
  2. - (void)loadImages {  
  3.   TTPhotoView* centerPhotoView = self.centerPhotoView;  
  4.   for (TTPhotoView* photoView in _scrollView.visiblePages.objectEnumerator) {  
  5.     if (photoView == centerPhotoView) {  
  6.       [photoView loadPreview:NO];  
  7.   
  8.     } else {  
  9.       [photoView loadPreview:YES];  
  10.     }  
  11.     //修改interfaceOrientation   
  12.     if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){  
  13.       photoView.contentMode = UIViewContentModeScaleAspectFill;  
  14.     }  
  15.     else{  
  16.       photoView.contentMode = UIViewContentModeScaleAspectFit;  
  17.     }  
  18.   }  
  19.   
  20.   if (_delayLoad) {  
  21.     _delayLoad = NO;  
  22.     [self startImageLoadTimer:kPhotoLoadLongDelay];  
  23.   
  24.   } else {  
  25.     [centerPhotoView loadImage];  
  26.   }  
  27. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值