2011-11-19 46 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; 
} 

内容将在用户捏时自动缩放

请注意,每个帧子视图不会改变,只是显示的比例尺

相关问题