IOS UINavigationController

導(dǎo)航條

//UINavigationBar (導(dǎo)航條,普通視圖控件,父類為UIView)

//每個(gè)導(dǎo)航控制器有且只有一個(gè)導(dǎo)航條(所有的視圖控制器共用一個(gè)導(dǎo)航條)

//導(dǎo)航控制器中的導(dǎo)航條尺寸固定(320*44)

//拿到導(dǎo)航條的方法

self.navigationController.navigationBar

//設(shè)置導(dǎo)航條的風(fēng)格(黑色風(fēng)格,默認(rèn)為Defautl風(fēng)格,iOS7以后,余下的三個(gè)樣式幾乎沒有差別),設(shè)置導(dǎo)航條的風(fēng)格樣式會(huì)波及到狀態(tài)欄

//iOS7以前,設(shè)置導(dǎo)航條的樣式不會(huì)影響狀態(tài)欄

//開發(fā)中應(yīng)用最多的(設(shè)置導(dǎo)航條的背景圖片)

//UIBarMetricsDefault 對(duì)應(yīng)iPhone豎屏(人像模式)

//豎屏導(dǎo)航欄的尺寸(320*44)(人像模式)

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar"] forBarMetrics:UIBarMetricsDefault];

//UIBarMetricsLandscapePhone 對(duì)應(yīng)iPhone橫屏(風(fēng)景模式)

//橫屏導(dǎo)航欄的尺寸(480*32)(風(fēng)景模式)

[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"Nav_bg"]forBarMetrics:UIBarMetricsDefault];//設(shè)置navigationBar的背景圖片渐北,這樣狀態(tài)條還是 黑底白字士骤。

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav-32"] forBarMetrics:UIBarMetricsLandscapePhone];

//圖片尺寸嚴(yán)格為(320*44、640*88視網(wǎng)膜屏)

//圖片嚴(yán)格遵守320*44的尺寸,貼圖不會(huì)波及到狀態(tài)欄艾猜,而且狀態(tài)欄會(huì)自動(dòng)呈現(xiàn)出最初的樣式

//iOS7中push到導(dǎo)航控制器的視圖控制器,如果view為默認(rèn)的clearColor衬鱼,在push的時(shí)候业筏,會(huì)出現(xiàn)卡頓的現(xiàn)象,iOS7以前不會(huì)

//解決辦法,改變被push的試圖控制器view的背景顏色

self.view.backgroundColor = [UIColor cyanColor];

//導(dǎo)航控制器如何管理視圖控制器是重點(diǎn)

//導(dǎo)航控制器類(管理視圖控制器的軟件架構(gòu)級(jí)的組件)

//導(dǎo)航控制器在初始化的時(shí)候鸟赫,需要接收一個(gè)視圖控制器的對(duì)象蒜胖,這個(gè)視圖控制器叫做導(dǎo)航控制器的根視圖控制器

//根視圖控制器(它的view會(huì)在程序啟動(dòng)之初,加到導(dǎo)航控制器上)

//initWithRootViewController 會(huì)使root引用計(jì)數(shù)+1

//導(dǎo)航控制器能夠通過特定的方式來管理視圖控制器

//iOS7中視圖控制器的view是滿屏顯示的惯疙,狀態(tài)欄(20)和導(dǎo)航條(44)會(huì)遮住視圖控制器view的一部分

//向view上添加控件,y至少要從64開始

//iOS7中Button的圓角矩形效果被去掉了

//iOS7以前(視圖控制器view的y坐標(biāo)從導(dǎo)航條的下面開始算起)

//導(dǎo)航控制器通過棧這種數(shù)據(jù)結(jié)構(gòu)來管理視圖控制器(導(dǎo)航控制器有一個(gè)棧容器)

//棧是一種常用的數(shù)據(jù)結(jié)構(gòu) (棧中元素遵循先進(jìn)后出的原則)

/*1妖啥、第一個(gè)被添加到棧中的元素叫做基棧

*2霉颠、最后一個(gè)被添加到棧中的元素叫做棧頂

*3、將元素添加到棧中的操作叫做元素的入棧

*4荆虱、移除棧中元素的操作蒿偎,叫做元素的出棧

*/

//導(dǎo)航控制器操作視圖控制器對(duì)象的入棧和出棧

//視圖控制器的navigationController屬性能夠拿到管理它的導(dǎo)航控制器的對(duì)象(拿到的前提是視圖控制器的對(duì)象被添加到導(dǎo)航控制器中)

//將second添加到導(dǎo)航控制器的棧容器中(對(duì)second執(zhí)行入棧),會(huì)使second引用計(jì)數(shù)+1

[self.navigationController pushViewController:second animated:YES];

//執(zhí)行棧頂元素的出棧(將最后一個(gè)被添加到棧容器的元素朽们,從棧中移除)

//會(huì)使棧頂元素引用計(jì)數(shù)-1

//直接返回到root(根視圖控制器)(會(huì)把其他對(duì)象全部從棧容器中移除,每個(gè)引用計(jì)數(shù)-1)

[self.navigationController popToRootViewControllerAnimated:YES];

[self.navigationController popViewControllerAnimated:YES];

//返回到second視圖控制器界面

//導(dǎo)航控制器的viewControllers屬性是一個(gè)數(shù)組,所有加到棧容器中的視圖控制器對(duì)象都在這個(gè)數(shù)組中(數(shù)組中元素下標(biāo)的順序與視圖控制器添加到棧中的順序一致)

NSArray *controllers =self.navigationController.viewControllers;

//通過數(shù)組取到second對(duì)象

//popToViewController (保證要跳轉(zhuǎn)到的視圖控制器對(duì)象在棧中存在)

[self.navigationController popToViewController:[controllers objectAtIndex:1] animated:YES];

//UINavigationItem(用于定制導(dǎo)航條上內(nèi)容的顯示)

//每個(gè)視圖控制器可以通過navigationItem屬性诉位,來定制導(dǎo)航條上的顯示

//self.navigationItem

//通過navigationItem設(shè)置導(dǎo)航條上顯示的標(biāo)題

self.navigationItem.title = @"root";

//設(shè)置導(dǎo)航條上顯示的標(biāo)題視圖

//賦值引用計(jì)數(shù)+1,titleView,會(huì)將視圖自動(dòng)居中顯示,在外部設(shè)置x,y無效果

self.navigationItem.titleView = titleView;

//設(shè)置導(dǎo)航條上的按鈕(UIBarButtonItem的對(duì)象有多種創(chuàng)建方式)

//通過初始化標(biāo)題的方法

//UIBarButtonItemStylePlain (iOS7中將Item的圓角矩形和邊框全部去掉了)

//用系統(tǒng)提供的樣式初始化得到UIBarButtonItem的對(duì)象

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"左側(cè)" style:UIBarButtonItemStylePlain target:self action:@selector(leftItemClicked:)];

//開發(fā)中最常用的創(chuàng)建UIBarButtonItem的方法 initWithCustomView(接收UIView)最常用的接收一個(gè)UIButton(custom樣式骑脱,貼圖)

UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithCustomView:customBtn];

//顯示在導(dǎo)航條的左側(cè)

self.navigationItem.leftBarButtonItem = item;

//rightBarButtonItems 數(shù)組 設(shè)置一組UIBarButtonItem的顯示,數(shù)組的元素必須是UIBarButtonItem的對(duì)象

self.navigationItem.rightBarButtonItems = array;

self.navigationController.navigationBar.translucent = NO;

這句話的意思就是讓導(dǎo)航欄不透明且占空間位置,所以我們的坐標(biāo)就會(huì)從導(dǎo)航欄下面開始算起苍糠。

self.edgesForExtendedLayout = UIRectEdgeNone;和上面的語句一個(gè)效果叁丧。

UIToolBar 工具欄

//每個(gè)導(dǎo)航控制器都有一個(gè)工具欄,是一個(gè)UIToolBar的對(duì)象,顯示在最底部岳瞭,尺寸(320*44),工具欄默認(rèn)處于隱藏狀態(tài)

//顯示工具欄

[self.navigationController setToolbarHidden:NO];

//拿到導(dǎo)航控制器中工具欄的方法

//self.navigationController.toolbar

//設(shè)置工具欄的背景圖片

//UIBarPosition中的枚舉值只支持iOS7

//UIToolbarPositionBottom(在iOS7和7以前的操作系統(tǒng)都適用)

//UIToolbarPositionBottom 理解(每個(gè)UIView都可以指定TopBar 和BottomBar),導(dǎo)航控制器中工具欄是作為導(dǎo)航控制器view的BottomBar被自動(dòng)創(chuàng)建出來的

//每個(gè)視圖控制器可以定制工具欄上的按鈕顯示

//toolbarItems屬性接收帶有UIBarButtonItem對(duì)象的數(shù)組

//self.toolbarItems

//UIBarButtonSystemItemFlexibleSpace (創(chuàng)建出來的為看不見的間隔按鈕,間隔的數(shù)值會(huì)根據(jù)設(shè)定自動(dòng)計(jì)算出來,等距的間隔)

UIBarButtonItem *space= [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:@selector(itemClicked)];

//開發(fā)中拥娄,底部工具欄往往自己通過UIView+UIButton定制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞳筏,隨后出現(xiàn)的幾起案子稚瘾,更是在濱河造成了極大的恐慌,老刑警劉巖姚炕,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摊欠,死亡現(xiàn)場離奇詭異,居然都是意外死亡柱宦,警方通過查閱死者的電腦和手機(jī)些椒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捷沸,“玉大人摊沉,你說我怎么就攤上這事⊙鞲” “怎么了说墨?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長苍柏。 經(jīng)常有香客問我尼斧,道長,這世上最難降的妖魔是什么试吁? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任棺棵,我火速辦了婚禮,結(jié)果婚禮上熄捍,老公的妹妹穿的比我還像新娘烛恤。我一直安慰自己,他們只是感情好余耽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布缚柏。 她就那樣靜靜地躺著,像睡著了一般碟贾。 火紅的嫁衣襯著肌膚如雪币喧。 梳的紋絲不亂的頭發(fā)上轨域,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音杀餐,去河邊找鬼干发。 笑死,一個(gè)胖子當(dāng)著我的面吹牛史翘,可吹牛的內(nèi)容都是我干的枉长。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼恶座,長吁一口氣:“原來是場噩夢啊……” “哼搀暑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跨琳,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤自点,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后脉让,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桂敛,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年溅潜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了术唬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡滚澜,死狀恐怖粗仓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情设捐,我是刑警寧澤借浊,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站萝招,受9級(jí)特大地震影響蚂斤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜槐沼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一曙蒸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岗钩,春花似錦纽窟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春趋艘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凶朗。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工瓷胧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棚愤。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓搓萧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宛畦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘸洛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一、概述 類繼承關(guān)系如下:UINavigationController<- UIViewcontroller <-...
    你好自己閱讀 3,285評(píng)論 5 48
  • 常用屬性 設(shè)置navigationItem的titleViewinitWithImage:初始化UIImageVi...
    iOS_成才錄閱讀 1,143評(píng)論 0 6
  • 第一章 “覺醒了吧次和?” “嗯反肋。” “Alpha踏施?” “Omega” “嗯石蔗,知道了!” “回房間好好休息畅形,打電話讓金...
    Zivless閱讀 323評(píng)論 0 1
  • 今天是我在簡書上開始寫作的第一天养距,說實(shí)話,有些糾結(jié)日熬,不知道寫點(diǎn)什么好棍厌。只覺得自己辭藻貧乏,頭腦中亦沒有什么閃光的靈...
    小松果的森語閱讀 415評(píng)論 0 0
  • 這一周竖席,沒有什么特別的工作耘纱,幾乎每天坐在辦公室上網(wǎng),學(xué)習(xí)成效較低怕敬。 1.閱讀了《地籍測量學(xué)》找到一點(diǎn)較實(shí)際的知識(shí) ...
    xhq閱讀 145評(píng)論 0 0