iOS UIScrollView AutoLayout

1.使用UIScrollView必须得先加一层ContentView,作为ScrollView的内容视图。

2.然后使ContentView与ScrollView的内容大小一致。(即设置ContentView的Trailing,Align,Bottom,Align)。另外在设置ContentView与ScrollView宽高一致(Equal Width,Equal Height)由于我做的是左右滚动所以要把Trailing的值设为1.若是上下滚动则设置Bottom的值为1

3.将Equal Widths设置成属性(后期界面旋转的时候要用)

4.代码部分初始化(代码写入2个tableView)

_myScroll.delegate=self;
    self.contentWidht.constant=ScreenWidth;//暂时不明白为什么不是2倍的宽度(之前设置ScrollView.contentSize都是2倍视图宽度)
    NSLog(@"%f",self.contentWidht.constant);
    self.myScroll.bounces=NO;
    self.title=@"测试列表";
    
    _tableOne=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, self.view.frame.size.height) style:UITableViewStylePlain];
    _tableOne=[[UITableView alloc]init];
    _tableOne.delegate=self;
    _tableOne.dataSource=self;
    _tableOne.backgroundColor=[UIColor redColor];
    [_tableOne setTranslatesAutoresizingMaskIntoConstraints:NO];
    [_myView addSubview:_tableOne];
    NSDictionary *metrics=@{@"myWidth":[NSNumber numberWithFloat:ScreenWidth]};
    NSArray *constriont1=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_tableOne(myWidth)]-0-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_tableOne,_myView)];
    
    NSArray *constriont2=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_tableOne]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableOne)];
    [self.myView addConstraints:constriont2];
    [self.myView addConstraints:constriont1];
    
    
    _tableTwo=[[UITableView alloc]initWithFrame:CGRectMake(ScreenWidth, 0, self.view.frame.size.width, self.myScroll.frame.size.height) style:UITableViewStylePlain];
    [_tableTwo setTranslatesAutoresizingMaskIntoConstraints:NO];
    _tableTwo.delegate=self;
    _tableTwo.dataSource=self;
    _tableTwo.backgroundColor=[UIColor blueColor];
    [_myView addSubview:_tableTwo];
    NSArray *constriont3=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-myWidth-[_tableTwo(myWidth)]-0-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_tableTwo)];
    
    NSArray *constriont4=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_tableTwo]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableTwo)];
    [self.myView addConstraints:constriont3];
    [self.myView addConstraints:constriont4];


5.界面旋转部分

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
   
    if (toInterfaceOrientation == UIDeviceOrientationPortrait || toInterfaceOrientation ==UIDeviceOrientationPortraitUpsideDown) {
        
        //翻转为竖屏时
        NSLog(@"竖屏");
        self.contentWidht.constant=ScreenWidth;
        NSLog(@"%f",ScreenHeight);
        NSLog(@"%f",ScreenWidth);
        for (NSLayoutConstraint *constry in self.myView.constraints) {
            [self.myView removeConstraint:constry];
        }
        NSDictionary *metrics=@{@"myWidth":[NSNumber numberWithFloat:ScreenWidth]};
        NSArray *constriont1=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_tableOne(myWidth)]-0-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_tableOne,_myView)];
        
        NSArray *constriont2=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_tableOne]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableOne)];
        [self.myView addConstraints:constriont2];
        [self.myView addConstraints:constriont1];
        NSArray *constriont3=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-myWidth-[_tableTwo(myWidth)]-0-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_tableTwo)];
        
        NSArray *constriont4=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_tableTwo]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableTwo)];
        [self.myView addConstraints:constriont3];
        [self.myView addConstraints:constriont4];

//        [self setVerticalFrame];
        
    }else if (toInterfaceOrientation==UIDeviceOrientationLandscapeLeft || toInterfaceOrientation ==UIDeviceOrientationLandscapeRight) {
        
        //翻转为横屏时
        NSLog(@"横屏");
        self.contentWidht.constant=ScreenWidth;
        NSLog(@"%f",ScreenHeight);
        NSLog(@"%f",ScreenWidth);
        for (NSLayoutConstraint *constry in self.myView.constraints) {
            [self.myView removeConstraint:constry];
        }
        
        NSDictionary *metrics=@{@"myWidth":[NSNumber numberWithFloat:ScreenWidth]};
        NSArray *constriont1=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_tableOne(myWidth)]-0-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_tableOne,_myView)];
        
        NSArray *constriont2=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_tableOne]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableOne)];
        [self.myView addConstraints:constriont2];
        [self.myView addConstraints:constriont1];
        NSArray *constriont3=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-myWidth-[_tableTwo(myWidth)]-0-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_tableTwo)];
        
        NSArray *constriont4=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_tableTwo]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableTwo)];
        [self.myView addConstraints:constriont3];
        [self.myView addConstraints:constriont4];
//        [self setHorizontalFrame];
        
    }
}
5.效果图如下:大家可以参考一下


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值