理解subView,手动实现多个视图切换
2013-03-05 15:11
211 查看
转自holydancer的CSDN专栏,原文地址:/article/1358474.html
在Iphone的视图中,其实就是一个一个view,一层view上面放一层view,一个view上面放一群view,甚至UIWindow也是一个view,在网上找了一张图片很能说明这个问题:
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/1333369008_7472.png?version=1&modificationDate=1362121507000&api=v2)
可见我们能够看到的都是一个view视图,而我们能对其进行操作,是因为UIController和UIView都是UIResponder的子类。这时我们对视图进行操作时需要掌握几个比较重要的概念和几个常用的方法.一个是superView和subView的概念,一个是UIView和UIControl类对象的区别。
当我们生成一个独立的view视图时,往往是新建一个UIViewController的文件并伴随一个xib文件,这个xib文件中的fie's owner肯定是这个UIViewController类了,而它的Objects一般就是一个UIView对象(一张干净的画布),我们往往可以将这个UIView改为UIControl,通过修改它的Custom Class项来实现,这时这一大张画布就可以像它上面那些button之流的控件一样来响应方法了,我们在隐藏软键盘时就用到了这一点。
而superView和subView的概念更好理解,view上可以放控件,那么这个view就是这些控件的superView.而UIWindow上可以叠一层又一层的view,UIWindow就是这些view的superView.先放上去的index为0,然后依次累加。
处理superView和subView往往用到几个方法:
removeFromSuperview;//调用者为subView
insertSubview:atIndex;//调用者为superView
了解了这些我们来看一个实例,很简单,实现在根视图控制器上添加两个view(都是整页覆盖屏幕的),然后点击屏幕分别切换显示。
新建一个项目,然后添加两个UIViewController类并附带xib文件,分别取名为FirstViewController,SecondViewController;在viewController中进行如下操作:
viewController.h:
viewController.m
以上代码实现了在viewDidLoad中声明两个对象,然后添加到主视图上,这样在打开模拟器时会看到secondView的视图(后添加的在上面,index为1);
然后在FirstViewController.xib文件中将View的Custom Class发为UIControl,背景改一下,贴个label内容为1;
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/image2013-3-1%2015%3A6%3A46.png?version=1&modificationDate=1362121606000&api=v2)
在FirstViewController.h中添加一个输出口:
在FirstViewController.m中进行如下操作:
这样就利用insert方法在点击该视图时将其放入底部,另一个视图就显示出来了,在secondViewController中进行同样的操作,就会实现初始化后点击屏幕来回切换的效果。当然,这是在两个视图的情况下,只是两个不停的换位置的效果,demo用于理解方法,如果是多视图大应用的话常常要进行remove操作,这样会提高效率。
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/1333370745_2039.png?version=1&modificationDate=1362121717000&api=v2)
在Iphone的视图中,其实就是一个一个view,一层view上面放一层view,一个view上面放一群view,甚至UIWindow也是一个view,在网上找了一张图片很能说明这个问题:
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/1333369008_7472.png?version=1&modificationDate=1362121507000&api=v2)
可见我们能够看到的都是一个view视图,而我们能对其进行操作,是因为UIController和UIView都是UIResponder的子类。这时我们对视图进行操作时需要掌握几个比较重要的概念和几个常用的方法.一个是superView和subView的概念,一个是UIView和UIControl类对象的区别。
当我们生成一个独立的view视图时,往往是新建一个UIViewController的文件并伴随一个xib文件,这个xib文件中的fie's owner肯定是这个UIViewController类了,而它的Objects一般就是一个UIView对象(一张干净的画布),我们往往可以将这个UIView改为UIControl,通过修改它的Custom Class项来实现,这时这一大张画布就可以像它上面那些button之流的控件一样来响应方法了,我们在隐藏软键盘时就用到了这一点。
而superView和subView的概念更好理解,view上可以放控件,那么这个view就是这些控件的superView.而UIWindow上可以叠一层又一层的view,UIWindow就是这些view的superView.先放上去的index为0,然后依次累加。
处理superView和subView往往用到几个方法:
removeFromSuperview;//调用者为subView
insertSubview:atIndex;//调用者为superView
了解了这些我们来看一个实例,很简单,实现在根视图控制器上添加两个view(都是整页覆盖屏幕的),然后点击屏幕分别切换显示。
新建一个项目,然后添加两个UIViewController类并附带xib文件,分别取名为FirstViewController,SecondViewController;在viewController中进行如下操作:
viewController.h:
然后在FirstViewController.xib文件中将View的Custom Class发为UIControl,背景改一下,贴个label内容为1;
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/image2013-3-1%2015%3A6%3A46.png?version=1&modificationDate=1362121606000&api=v2)
在FirstViewController.h中添加一个输出口:
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/1333370745_2039.png?version=1&modificationDate=1362121717000&api=v2)
![](http://192.168.1.97:8090/wiki/download/attachments/2228250/1333370729_3248.png?version=1&modificationDate=1362121747000&api=v2)
相关文章推荐
- (转)理解subView,手动实现多个视图切换
- Iphone开发(九)理解subView,手动实现多个视图切换
- Iphone开发(九)理解subView,手动实现多个视图切换
- 理解subView,手动实现多个视图切换
- Iphone开发(九)理解subView,手动实现多个视图切换
- Iphone开发(九)理解subView,手动实现多个视图切换
- 理解subView,手动实现多个视图切…
- Android之ViewFlipper实现手动+自动切换图片(附加动画效果)
- UIScrollView实现的简单视图切换
- iOS 视图在不同View之间的切换(对于convertRect:函数的一些理解)
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- 用presentingViewController实现左右切换视图
- UIScrollView+UIView实现下划线随视图切换功能
- Android技术——视图切换(四)“ViewSwitcher+手势识别”实现视图的滑动切换
- UIScrollView+UIPageControl+NSTimer实现图片的自动滑动以及用户可手动切换,UIPageControl可点击
- iOS开发导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- 【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- viewpager同时实现自动切换和手动切换
- pageViewController实现多视图(控制器)滑动切换
- ios 画图 绘图的实现(自由批注中视图的subview的实现)bitmap Quartz 2D 缓存位图 自由批注功能的实现 如何实现在view上自由绘图 提供源码