iOS UIScrollView AutoLayout

来源:互联网 发布:视频照片制作软件 编辑:程序博客网 时间:2024/05/21 15:41

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.效果图如下:大家可以参考一下


0 0