UINavigationController使用小結

來源:互聯網
上載者:User

這個類很簡單,基本上就是pushViewController和popViewController這樣兩個方法是常用的。

這裡要講的是可能很容易被忽略的。

首先,使用[UINavigationController alloc] initWithRootViewController:rootvc]. rootvc會在navigationController這樣一個屬性訪問UINavigationController的執行個體,但是,它並不retain。所以,如果你遵循記憶體管理法則,誰建立,誰release,就會遇到一個讓你非常糾結的問題,後面的所有push調用都會失效。即類似如下代碼:

RootViewController * viewcontroller = [[RootViewcontroller alloc] initWithNibName:nil bundle:[NSundle mainBundle]];UINavigationController * nav=[[UINavigationController alloc] initWithRootViewConroller:viewcontroller];[nav release];//這句話會導致所有的push操作失效

解決辦法就是建立一個屬性來retain這個nav即可。這一點顯然違反了一般的記憶體管理原則。不知道當初設計的時候是怎麼玩的。

最後記錄一下相關的視圖幾何元素(到iphone4/4S應該都相應的變了):

1. 狀態列高度:20,有通話的時候40.

2. NavigationController導覽列高度44,橫屏的時候32.

3. Tabbar,48,

4. toolbars,44。

5. 鍵盤。一般來說是320x216,橫屏的時候是480x162.不過這個做不得准,可以通過回調來擷取。

6. 一般來說,button,label,textfield至少需要30個像素高來正常顯示文字。(預設字型)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.