2011-11-19 47 views
1

基本上,我的觀點的層次結構如下:如何同時擴大我的子視圖中的UIScrollView

UIWindow (level 1) 
    |--UIScrollView (level 2) 
      |--single UIView (level 3) 
       |-- Multiple subviews (level 4) 

當4級,應用程序將

  1. 規模都在同一子視圖用戶捏級別4的子視圖的大小爲(1024,748),即全部填滿整個iPad屏幕,我的應用程序始終在橫向模式下工作。
  2. 顯示用戶捏住的子視圖(級別4)作爲當前內容。

我嘗試添加下面的代碼在捏放處理過程放大UIView的,它不工作,它只是放大UIView的框架,但水平4子視圖是不是在所有縮放。

我添加第3級UIView的原因是我想要在縮放級別3 UIView時自動縮放所有第4級子視圖,因此我不需要逐個縮放這些子視圖。 現在我很困惑,可以工作嗎?或者我是否需要手動逐個縮放所有4級子視圖?

- (IBAction)handlePinchTap:(UIPinchGestureRecognizer *)gestureRecognizer { 

NSLog(@"handle tap"); 
CGRect oldFrame = self.levelThreeUIView.frame; 

[UIView animateWithDuration:1.0 animations:^{ 

    self.levelThreeUIView.frame = CGRectMake(0, 0, oldFrame.size.width, 748); 


}]; 
} 

回答

1

解決此問題的一種方法是設置每個子視圖的autoResizing屬性。如果父視圖大小改變,這基本上調整子視圖的大小。設置這個屬性最簡單方法是轉到Interface Builder中&選擇您的視圖&做到這一點 -

enter image description here

你看到Autosizing框右側,每個子視圖中選擇所有四個&內自動調整大小的選項。在例子中,Xcode向您展示了視圖將如何根據您的設置調整大小。

1

有點晚了......但爲了以防萬一別人絆倒這個......

你不必調整第三級視圖。相反,你必須設置UIScrollView的contentSize到第三級視圖的大小,

self.scrollView.contentSize = self.levelThreeUIView.frame.size; 

設置滾動視圖的委託到控制器

self.scrollView.delegate = self 

,並把

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return self.levelThreeUIView; 
} 

內容將在用戶捏時自動縮放

請注意,每個幀子視圖不會改變,只是顯示的比例尺

相關問題