系統UINavigationController使用相關參考

  閒來無事便在網上google&baidu了一番UINavigationController的相關文章,而後又看了下官方文檔;看看更新到iOS7以後UINavigationController的是否有變化,同時也再溫故下UINavigationController的使用0.0 平時都是用的自定義的導航欄別到時連繫統本身的都不會用了-。-
  這裏不介紹UINavigationController的使用,其實這個大部分狀況下也只是用於頁面的跳轉就行了;如今我就記錄一些平時沒怎麼注意到的和還蠻重要的屬性,加之理一下層次關係;主要做用仍是爲了本身不記得時好查看一下好了0.0
  通常來講應該是UINavigationController包含UINavigationBar和UIToolbar;而後UINavigationBar中又包含了若干個UINavigationItem;UIToolbar也包含如干個UIBarButtonItem的。這個確實如此,不過在UIViewController的擴張類中有navigationItem和toolbarItems的屬性能夠管理UINavigationController裏面定義的UINavigationItem和UIToolbar。
  注意:這裏UIBarButtonItem是專門針對一個的UIToolbar或者UINavigationBar對象放置在一個按鈕。
  navigationBar默認 是顯示的,而toolbarHidden則是默認隱藏的,如需更改顯示狀態的話能夠調用如下代碼來實現,這兩個都是UINavigationController下定義的屬性,同時也有對應的設置方法的。
代碼中設置:
  self.navigationController.navigationBarHidden = YES;
    self.navigationController.toolbarHidden = NO;
  
 
 


 下面根據不一樣的對象來介紹UINavigationController相關的一些類:

  //UINavigationBar
  好吧,到如今爲止在使用UINavigationController的時候我是不多不多使用到UINavigationBar來進行相關設置的,不少的時候都是直接跳過self.navigationItem來管理的。不過在使用系統NavgationController的時候有些屬性仍是頗有用的,記錄下:
//titleTextAttributes(ios5.0之後可用)這是UINavigationBar的一個屬性,經過它你能夠設置title部分的字體、字號、陰影等
@property(nonatomic,copy) NSDictionary *titleTextAttributes NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

//UINavigationBar的這個屬性能夠設置navigation的內容和其中的按鈕的顏色
@property(nonatomic,retain) UIColor *tintColor;

代碼調用:
  NSDictionary *dict = [NSDictionary dictionaryWithObject:[UIColor redColor] forKey:UITextAttributeTextColor];
    self.navigationController.navigationBar.titleTextAttributes = dict;
    self.navigationItem.hidesBackButton = YES;

self.navigationController.navigationBar.tintColor = [UIColor greenColor];
 
  //UINavigationItem
  一般狀況下咱們在某個視圖控制器中會經過self.navigationItem來管理系統的UINavigationController中的導航欄中的內容,UINavigationItem下的不少屬性都是很常會用到的:
@property(nonatomic,copy)   NSString        *title;     //導航欄的標題
@property(nonatomic,retain) UIView          *titleView; //導航欄的自定義視圖,設定以後title就沒效果了
@property(nonatomic,copy)   NSString *prompt;     //設置了這個屬性值以後,導航欄會加高30,在導航欄標題上方顯示該值
@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;//自定義導航欄的左按鈕,默認是返回按鈕
@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;//自定義導航欄的左按鈕,默認是沒有東西顯示


//代碼示例以下
self.navigationItem.title = @"Root"; //設置標題,其實效果和self.title = @"Root";差很少
self.navigationItem.prompt  =@"prompt test";

//在導航欄中添加segment
NSArray *array = [NSArray arrayWithObjects:@"12",@"34", nil];
UISegmentedControl *segmentedController = [[UISegmentedControl alloc] initWithItems:array];
segmentedController.segmentedControlStyle = UISegmentedControlSegmentCenter;
[segmentedController addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
self.navigationItem.titleView = segmentedController;

//左按鈕
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(selectLeftAction:)];
self.navigationItem.leftBarButtonItem = leftButton;

//右按鈕
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd  target:self action:@selector(selectRightAction:)];
self.navigationItem.rightBarButtonItem = rightButton;


//下面這兩個屬性設置可同時設置多個左、右按鈕,設置方法和單個的差很少,只是先給歸類到一個數組中;不過最好不要和設置單個的混合使用
@property(nonatomic,copy) NSArray *leftBarButtonItems NS_AVAILABLE_IOS(5_0);//設置多個左按鈕,從左往右排列
@property(nonatomic,copy) NSArray *rightBarButtonItems NS_AVAILABLE_IOS(5_0);//設置多個左按鈕,從右往左排列

代碼示例:
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:leftButton,leftButton1, nil];
 
  //UIToolbar
  通常咱們也都是沒用這個系統的工具欄的,不過這裏也列一下好了0.0
  UIToolbar一些屬性咱們也基本沒使用,差很少就看做是存放多個UIBarButtonItem的容器好了,同時也大多使用UIViewController的擴張屬性toolbarItems來管理好了,直接跳過UIToolbar
  使用的時候先要設置顯示工具欄,默認是隱藏的額,而後就能夠加入多個UIBarButtonItem了,通常當UIButton使用好了
//代碼示例:

self.navigationController.toolbarHidden = NO;

UIBarButtonItem *one = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:nil action:nil];
    UIBarButtonItem *two = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:nil action:nil];
    UIBarButtonItem *three = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];
    UIBarButtonItem *four = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:nil action:nil];
     //這個可以使UIBarButtonItem自適應排列
    UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [self setToolbarItems:[NSArray arrayWithObjects:flexItem, one, flexItem, two, flexItem, three, flexItem, four, flexItem, nil]];
相關文章
相關標籤/搜索