通过UIKit坐标系来全面掌握iOS中的UIScrollView组件

2020-01-15 14:47:20丽君
iOS开发套件中的UIScrollView组件十分强大,不仅是滚动,缩放操作也能够控制自如,其核心当然是坐标轴上的控制,下面就通过UIKit坐标系来全面掌握iOS中的UIScrollView组件  

感谢UIKit的坐标系统特性,使我们之花了30几行代码就能重现UIScrollView的精华,当然真正的UIScrollView要比我们所做的复杂的多,反弹效果,动量滚动,放大试图,还有代理方法,这些特性我们没有在这里涉及到。
首先,让我们先来了解一下UIKit中的坐标系是怎么工作的。如果你只对滚动试图的代码实现感兴趣可以放心跳过下一小节。UIKit坐标系每一个View都定义了他自己的坐标系统。如下图所示,x轴指向右方,y轴指向下方:

UIKit,iOS,UIScrollView

注意这个逻辑坐标系并不关注包含在其中View的宽度和高度。整个坐标系没有边界向四周无限延伸.我们在坐标系中放置四个子View。每一次色块代表一个View:

UIKit,iOS,UIScrollView

添加View的代码实现如下:

复制代码
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)]; 
redView.backgroundColor = [UIColor colorWithRed:0.815 green:0.007 
    blue:0.105 alpha:1]; 
  
UIView *greenView = [[UIView alloc] initWithFrame:CGRectMake(150, 160, 150, 200)]; 
greenView.backgroundColor = [UIColor colorWithRed:0.494 green:0.827 
    blue:0.129 alpha:1]; 
  
UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(40, 400, 200, 150)]; 
blueView.backgroundColor = [UIColor colorWithRed:0.29 green:0.564 
    blue:0.886 alpha:1]; 
  
UIView *yellowView = [[UIView alloc] initWithFrame:CGRectMake(100, 600, 180, 150)]; 
yellowView.backgroundColor = [UIColor colorWithRed:0.972 green:0.905 
    blue:0.109 alpha:1]; 
  
[mainView addSubview:redView]; 
[mainView addSubview:greenView]; 
[mainView addSubview:blueView];