IOS之dropDownView

?很多時候都會有寫一個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的位置就簡單多了~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容