
我们在ViewController的viewDidLoad方法里创建一个UIScrollView并且加上约束
代码如下:
//创建scrollView
UIScrollView * scrollView=[[UIScrollView alloc] init]
scrollView.translatesAutoresizingMaskIntoConstraints=NO
scrollView.backgroundColor=[UIColor lightGrayColor]
[self.view addSubview:scrollView]
//给它加上约束 使它距屏幕的上左下右都是20像素
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[scrollView]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollView)]]
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[scrollView]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollView)]]
效果如图
我要再创建两个view 这两个view的大小和scrollview的大小一样大,使scrollview能横向滚动
代码如下:
//添加约束 (非常重要)
//1.水平方向排开 宽度相等 上下边缘对齐(等高)
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[redView]-0-[blueView(==redView)]-0-|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:NSDictionaryOfVariableBindings(redView,blueView)]]
//2.垂直方向一直撑到父视图的
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[redView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(redView)]]
//到了这里 还没完 如果是普通的view 那就搞定了 但是scrollview不一样还得添加下面两个约束
//3.redview的宽高 和scrollview的宽高相等的约束
[scrollView addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0]]
[scrollView addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0]]
整个viewdidload全部代码如下:
- (void)viewDidLoad
{
[super viewDidLoad]
//创建scrollView
UIScrollView * scrollView=[[UIScrollView alloc] init]
scrollView.translatesAutoresizingMaskIntoConstraints=NO
scrollView.backgroundColor=[UIColor lightGrayColor]
[self.view addSubview:scrollView]
//给它加上约束 使它距屏幕的上左下右都是20像素
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[scrollView]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollView)]]
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[scrollView]-20-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollView)]]
//创建redView
UIView * redView=[[UIView alloc] init]
redView.backgroundColor=[UIColor redColor]
redView.translatesAutoresizingMaskIntoConstraints=NO
[scrollView addSubview:redView]
//创建blueView
UIView * blueView=[[UIView alloc] init]
blueView.backgroundColor=[UIColor blueColor]
blueView.translatesAutoresizingMaskIntoConstraints=NO
[scrollView addSubview:blueView]
//添加约束 (非常重要)
//1.水平方向排开 宽度相等 上下边缘对齐(等高)
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[redView]-0-[blueView(==redView)]-0-|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:NSDictionaryOfVariableBindings(redView,blueView)]]
//2.垂直方向一直撑到父视图的
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[redView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(redView)]]
//3.redview的宽高 和scrollview的宽高相等的约束
[scrollView addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0]]
[scrollView addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0]]
}
首先你要有个总控制器,管理UIScrollView的事件。将你想要添加的子页面,也就是子Controller的View添加到你这个scollView上面就可以了。代码就是[scrollView addSubview: subController.view]首先,你要确保你scrollview的内容大小和contentSize的大小相符(最好不大不小)
如果1对了,还不能你的问题。那可能是要禁止边缘d动,实现如下
(1)当bounces属性设置为YES时,当UIScrollView中图片滑动到边界的时候会出现d动的效果,就像是Linux中的果冻效果一样。
(2)当bounces属性设置为NO时,当UIScrollView中图片滑动到边界时会直接定在边界就不会有d动的效果。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)