2012-11-18 53 views
1

我有一個應用程序,它具有全屏UIScrollView,其中有七個圖像。圖像也是全屏顯示,滾動視圖設置爲啓用分頁。自動旋轉設備時UIScrollView中的圖形故障

我有或者創建或移動圖像視圖的方法:

-(void)rebuildImageView{ 

    // set up images 
    float screenW = self.view.bounds.size.width; 
    float screenH = self.view.bounds.size.height; 
    int numImgs = self.soundNames.count; 

    self.mainScrollView.contentSize = CGSizeMake(screenW * numImgs, screenH); 
    for(int i=0; i<numImgs; i++){ 

     UIImageView* imageView = (UIImageView*)[self.mainScrollView viewWithTag:i+100]; 
     if(imageView == nil){ 
      imageView = [[UIImageView alloc] init]; 
      imageView.tag = i+100; 
      [self.mainScrollView addSubview:imageView]; 
      imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image%d.jpg",i]]; 
      imageView.contentMode = UIViewContentModeScaleAspectFill; 
      imageView.clipsToBounds = YES; 
      [imageView release]; 
     } 
     imageView.frame = CGRectMake(i * screenW, 0, screenW, screenH); 
    } 

    // scroll to the current one 
    [self.mainScrollView scrollRectToVisible:CGRectMake(self.currentSound*screenW, 0, screenW, screenH) animated:YES]; 
} 

我也有這個視圖控制器上:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    [UIView animateWithDuration:duration animations:^{ 
     [self rebuildImageView]; 
    }]; 
} 

當我自轉而圖像0此代碼工作正常正在顯示,但是當我在圖像7上時,您可以在旋轉時簡要查看圖像6的大部分內容。該視頻顯示發生的事情:

http://www.youtube.com/watch?v=1O3jOcTgVP8

是否有更好的方法,旋轉設備時,我應該使用重新配置滾動視圖和圖像?

+0

我也嘗試改變調用'scrollRectToVisible:'有'動畫:否'。沒有改變它。 – Tim

回答

1

willAnimateRotationToInterfaceOrientation:duration方法中的任何幀更改都應該自動生成動畫。所以你可以嘗試從塊中刪除它?

就個人而言,我已經有很多更多的運氣與這種類型的東西子類UIScrollView,並把相當於佈局子視圖幀代碼在layoutSubviews方法的覆蓋(不要忘記超級來電或你可能最終與錯位的滾動條)。

+0

有趣。讓我嘗試一下。 – Tim

+0

嘿,真棒 - 你的建議是將它從塊中移除,並將滾動調用設置爲'animate:NO',並將其修復。 – Tim

+0

太棒了!很高興它解決了:) – mackross