将UIScrollView添加到UIViewController

我有一个UIViewController ,我想添加一个UIScrollView (启用滚动支持),这可能吗?

我知道有可能,如果你有一个UIScrollView来添加一个UIViewController ,但我也感兴趣,如果反向是真的,如果我可以添加UIScrollView到现有的UIViewController ,这样我得到滚动function。

编辑

我想我找到了答案: 将UIViewController添加到UIScrollView

UIViewController有一个view属性。 因此,您可以在其view添加UIScrollView 。 换句话说,您可以将滚动视图添加到视图层次结构中。

这可以通过代码或通过XIB实现。 此外,您可以将视图控制器注册为滚动视图的委托。 通过这种方式,您可以实现执行不同function的方法。 请参阅UIScrollViewDelegate协议。

 // create the scroll view, for example in viewDidLoad method // and add it as a subview for the controller view [self.view addSubview:yourScrollView]; 

您还可以覆盖UIViewController类的loadView方法,并将滚动视图设置为您正在考虑的控制器的主视图。

编辑

我为你创建了一个小样本。 在这里,您有一个滚动视图作为UIViewController视图的子视图。 滚动视图有两个视图作为子视图: view1 (蓝色)和view2 (绿色)。

在这里,我想你可以只在一个方向滚动:水平或垂直。 在下面,如果您水平滚动,您可以看到滚动视图按预期方式工作。

 - (void)viewDidLoad { [super viewDidLoad]; UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; scrollView.backgroundColor = [UIColor redColor]; scrollView.scrollEnabled = YES; scrollView.pagingEnabled = YES; scrollView.showsVerticalScrollIndicator = YES; scrollView.showsHorizontalScrollIndicator = YES; scrollView.contentSize = CGSizeMake(self.view.bounds.size.width * 2, self.view.bounds.size.height); [self.view addSubview:scrollView]; float width = 50; float height = 50; float xPos = 10; float yPos = 10; UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, width, height)]; view1.backgroundColor = [UIColor blueColor]; [scrollView addSubview:view1]; UIView* view2 = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.size.width + xPos, yPos, width, height)]; view2.backgroundColor = [UIColor greenColor]; [scrollView addSubview:view2]; } 

如果只需要垂直滚动,可以更改如下:

 scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height * 2); 

显然,您需要重新排列view1view2的位置。

PS我在这里使用ARC。 如果不使用ARC,则需要显式release alloc-init对象。