IOS之dropDownView

2015-06-21  本文已影响212人  焚琴煮鹤de我

 很多时候都会有写一个dropDownView的功能需要,学习封装一个自己的dropDownView将显得非常之有必要.

在导航栏的titleView上添加一个button,然后通过点击这个titleButton来实现弹出dropDownView的效果.

于是乎我们就需要定义这样的一个buttonClick的方法

创建一个这样的控件,然后设定controller中的view大小,最后通过show的形式展示出来


创建这样一个自定义的View出来~

??? 我们为什么需要一个controller属性?因为其实我们创建的dropDownView中往往放的是类似tableView之类的控件,用一个单独的controller来管理它自然是极好的


在我们的dropDownView中,有这样一个容器,用来放我们将要添加的controller的view

???这个懒加载为何这么写?因为我们的containerView是一个weak的UI控件


通过重写set方法,将外界传入的controller的View添加到我们的容器之中

一来可以在容器中显示我们的内容,而来容器内的内容又可以达到单独的controller的控制,符合MVC设计原则

最后我们只要将这个dropDownView展示出来就好了:


这里有一个坐标系的转换

由于有父控件的存在,我们的容器containerView的frame往往是根据自己所在的view的frame来计算的,但这并不利于我们在整个手机界面上对弹出菜单位置的布局.

我们需要将点击button的那个View的frame转换到window上,这样利于我们的定位,才有了这句

/**坐标系转换*/

CGRect newFrame = [from convertRect: from.bounds toView:window];

转换完成之后再去布局具体的containerView的位置就简单多了~

上一篇下一篇

猜你喜欢

热点阅读