2010-10-12 216 views
4

我有一個滾動視圖,它會自動生成一系列包含圖像視圖的子視圖。其概念是,它幾乎是一個自定義PDF風格的閱讀器,其中每個頁面都作爲圖像加載到imageview中。有三個「圖層」 - 外部UIScrollView,子視圖內自動生成的子視圖和圖像視圖。UIScrollView旋轉問題

我一直有一些麻煩,我以前問過這個問題,但不幸的是,我的問題的核心是在錯誤的地方。這是我的第二次嘗試:

在旋轉時,所有內容都根據需要旋轉。不幸的是,這是我得到: alt text

顯然,我希望圖像1居中,並沒有圖像2的提示,直到你輕掃視圖。

這裏是我的設置視圖代碼:

- (void)loadView { 
    [self setUpView]; 
} 
- (void)setUpView { 
    //INITIALISE PAGING SCROLL VIEW 
    CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds]; 
    pagingScrollViewFrame.origin.x -= 10; 
    pagingScrollViewFrame.size.width += 20; 
    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame]; 
    pagingScrollView.contentMode = UIViewContentModeScaleAspectFit; 

    //CONFIGURE PAGING SCROLL VIEW 
    pagingScrollView.pagingEnabled = YES; 
    pagingScrollView.backgroundColor = [UIColor blackColor]; 
    pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width*7, pagingScrollViewFrame.size.height); 

    //ACTIVATE PAGING SCROLL VIEW 
    self.view = pagingScrollView; 

    //ADD PAGES TO SCROLL VIEW 
    for (int i = 0; i < 7; i++){ 
     ImageScrollView *page = [[[ImageScrollView alloc] init] autorelease]; 
     [self configurePage:page forIndex:i]; 
     [pagingScrollView addSubview:page]; 
    } 
} 

如何重新定義幀的大小?我應該調用什麼函數等等。我如何使圖像居中?

我是新來的,所以我很抱歉我的問題的含糊之處。

乾杯

回答

3

我已經想通了。這是我需要改變的單個頁面的框架,所以(在另一個問題的幫助下),我寫了一個重新定位的方法。

這是因爲我發現我需要遍歷併爲每個頁面重新調整每個框架的大小,然後將這些框架重新應用於視圖。爲了做到這一點,我需要創建一個數組,我將填入上面的For循環。我共有7頁。

然後,我可以(上旋轉)撥打下方重新定向的方法來重新大小每個視圖:

- (void) reOrient{ 
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){  
     CGRect f; 
     int i = 0; 
     for (ImageScrollView *page in pageArray) {   
      f = page.frame; 
      f.size.width = 320; 
      f.origin.x = (f.size.width * i); 
      page.frame = f; 
      pagingScrollView.contentSize = CGSizeMake(f.size.width * 7, 480); 
      i++; 
     } 
    }else{ 
     CGRect f; 
     int i = 0; 
     for (ImageScrollView *page in pageArray) {   
      f = page.frame; 
      f.size.width = 480; 
      f.origin.x = (f.size.width * i); 
      page.frame = f; 
      pagingScrollView.contentSize = CGSizeMake(f.size.width * 7, 480); 
      i++; 
     } 
    } 
} 
+1

'pagingScrollView.contentSize = CGSizeMake(f.size.width * 7,480);'沒有按不需要在for循環中爲每個頁面執行它。 – mahboudz 2012-09-13 18:50:31

1

這爲我工作:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 

    //get current page based on offset before rotation  
    NSInteger currentPage = self.scrollView.contentOffset.x/self.scrollView.bounds.size.width; 

    //set anticipated scrollview content size by switching width and height (they will be switched after rotation) 
    [self.scrollView setContentSize:CGSizeMake(totalPages * self.view.bounds.size.height, self.view.bounds.size.width)]; 

    //set the anticipated content offset based on height before rotation 
    [self.scrollView setContentOffset:CGPointMake(currentPage * self.scrollView.bounds.size.height, 0.0f)]; 
} 

基本上我設置內容在旋轉之前對新的scrollview內容大小進行偏移(我正在爲預期的高度和寬度切換高度和寬度)。

這對我旋轉全屏分頁UIScrollView時工作。

所有尋呼子視圖的具有以下自動尺寸調整掩模,使得它們整齊旋轉後落入地方:

UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin