iOS開發 - 第05篇 - 項目 - 02 - 導覽列

來源:互聯網
上載者:User

標籤:

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 - 導覽列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.