標籤:
1、Debug下NSLog
2、Xcode圖片展開
直接選中圖片,在右側屬性中設定即可,避免代碼展開。
3、添加搜尋方塊
在發現控制器的導覽列中添加一個搜尋方塊。
3.1 通過UISearchBar
系統內建的UISearchBar並不好用,不能改變其高度。
3.2 通過UITextField
3.3 自訂搜尋方塊
註:由於上述建立搜尋方塊控制項在其他地方也有可能用得上,因此最好將其抽取出來,自訂一個搜尋方塊控制項
4、彈出下拉式功能表
4.1 介面
4.2 設定導覽列的titleView
注1:設定UIButton左邊文字,右邊圖片,可以通過設定imageEdgeInsets和titleEdgeInsets來實現,也可以通過自訂UIButton來實現(設定title和image的frame)
注2:若使用imageEdgeInsets和titleEdgeInsets來實現,則需要計算文字的長度
注3:上述自訂控制項也可以封裝起來,方便其他地方使用
4.3 彈出
1> 對popover_background圖片進行垂直展開
註:如果圖片的某個方向上不規則,比如有突起,那麼這個方向就不能展開
2> 將彈出的View添加到UIWindow上(而且是最上面的UIWindow),不要添加到UIView上,否則會跟隨UIView滑動
3> 添加蒙版,在下拉式功能表彈出的時候,後面的介面不能點擊
註:下拉式功能表可能用在其他地方或者其他項目,需要對其進行封裝
5、簡單封裝下拉式功能表
註:自訂一個繼承自UIView的下拉式功能表控制項,而且封裝一個遮蓋即可,即將下來菜單封裝到遮蓋裡面,遮蓋作為一個自訂控制項。
5.1 自訂HWDropdownMenu
封裝:先寫外面,外面需要這麼使用,再具體實現裡面。
註:可在initWithFrame中設定self.backgroundColor= [UIColor clearColor];測試是否添加上去。
5.2 具體實現
1>懶載入一個UIImageView,用於背景黑色圖片,並且以後需要往背景添加其他控制項
2> 設定下拉式功能表內容 --- 注意和背景圖片大小適配
3> 自訂測試UITableViewController,將其放到下拉式功能表裡面,實現效果如下:
6、完善下拉式功能表的封裝
6.1 設定彈出下拉式功能表的位置
上述showFrom方法中,並沒有設定下拉式功能表位置,需要根據點擊那個控制項的位置,在其下方彈出下拉式功能表。
註:其中位置的確定需要使用座標系轉換!!!
在UIView的分類方法中封裝centerX和centerY方法
6.2 取消快顯功能表
在HWDropdownMenu的touchesBegan方法中[selfdismiss];即可
6.3 自動調整下拉式功能表的寬度
上述做法是:下拉式功能表的高度設定為自動調整,寬度設定為一定,最好改為寬度也有外面來設定,根據外面傳進來的控制項寬度,設定裡面下拉式功能表的寬度
1> 刪除懶載入containerView的217寬度
2> 設定Xcode圖片為展開模式(預設平鋪)
3> 設定setContent方法修改
7、自訂tabBar
7.1 介面
註:UITabBarButton屬於系統稀有,外界表面上不能改變其位置和尺寸!!只能自訂tabBar,重寫layoutSubViews方法,重新排布位置!!!
7.2 自訂WBTabBar
1>自訂WBTabBar,繼承自UITabBar,添加加號按鈕
2> 系統私人的UITabBarButton系統私人,可以通過字串類名判斷是否是該類
3> 換掉WBTabBarController中的TabBar
註:系統內建的TabBar屬於唯讀屬性,可以通過KVC來換!
7.3 點擊加號Modal控制器
注1:Modal控制器需要用控制器來調用,自訂TabBar需要將按鈕點擊事件傳遞出去,使用代理(讓WBTabBarController稱為TabBar的代理)
注2:TabBar本來就有delegate屬性
注3:自訂TabBar協議需要尊重系統TabBar協議
注4:點擊加號通知代理Modal控制器
8、KVC補充 --- 重要
注1:利用KVC可以隨意修改一個對象的屬性或者成員變數,不管其是否是私人屬性!!!
注2:forKey和forKeyPath區別(同理取值)
注3:取值
9、首頁導覽列titleView箭頭切換
給HWDropdownMenu定義代理,首頁控制器遵循代理,讓下拉式功能表銷毀的時候通知代理切換圖片
在HWDropdownMenu的show和dismiss方法中通知代理
註:涉及兩張圖片之間的切換,可以使用UIButton的selected屬性!
iOS開發 - 第05篇 - 項目 - 02 - 導覽列