亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中的導航欄UINavigationBar與工具欄UIToolBar要點解析

2020-07-26 03:19:11
字體:
來源:轉載
供稿:網友

一、導航欄UINavigationBar
1、導航欄的使用

在iOS開發中,我們通常會使用導航控制器,導航控制器中封裝了一個UINavigationBar,實際上,我們也可以在不使用導航控制器的前提下,單獨使用導航欄,在UINavigationBar中,也有許多我們可以定制的屬性,用起來十分方便。

2、UINavigationBar的創建和風格類型

導航欄繼承于UIView,所以我們可以像創建普通視圖那樣創建導航欄,比如我們創建一個高度為80的導航欄,將其放在ViewController的頭部,代碼如下:

UINavigationBar *bar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 320, 80)];
[self.view addSubview:bar];
效果如下:

201662792618648.png (207×396)

我們也可以設置導航欄的風格屬性,從iOS6之后,UINavigationBar默認為半透明的樣式,從上面也可以看出,白色的導航欄下面透出些許背景的紅色。導航欄的風格屬性可以通過下面的屬性來設置:

@property(nonatomic,assign) UIBarStyle barStyle;
UIBarStyle是一個枚舉,其中大部分的樣式都已棄用,有效果的只有如下兩個:

typedef NS_ENUM(NSInteger, UIBarStyle) {
    UIBarStyleDefault          = 0,//默認
    UIBarStyleBlack            = 1,//黑色
}
默認的風格就是我們上面看到的白色的風格,黑色的風格效果瑞如下:

201662792646704.png (208×400)

3、導航欄常用屬性和方法

從上面我們可以看到,iOS6后導航欄默認都是半透明的,我們可以通過下面的bool值來設置這個屬性,設置為NO,則導航欄不透明,默認為YES:

@property(nonatomic,assign,getter=isTranslucent) BOOL translucent;
下面一些方法用于設置NavigationBar及上面item的顏色相關屬性:

@property(null_resettable, nonatomic,strong) UIColor *tintColor;
tintColor這個屬性會影響到導航欄上左側pop按鈕的圖案顏色和字體顏色,系統默認是如下顏色:

201662792715889.png (57×53)

@property(nullable, nonatomic,strong) UIColor *barTintColor;
BarTintColor用于設置導航欄的背景色,這個屬性被設置后,半透明的效果將失效:

201662792738305.png (210×394)

- (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
- (nullable UIImage *)backgroundImageForBarMetrics:(UIBarMetrics)barMetrics;
上面兩個方法用于設置和獲取導航欄的背景圖案,這里需要注意,默認背景圖案是不做縮放處理的,所以我們使用的圖片尺寸要和導航欄尺寸匹配,這里面還有一個UIBarMetrics參數,這個參數設置設備的狀態,如下:

typedef NS_ENUM(NSInteger, UIBarMetrics) {
    UIBarMetricsDefault,//正常豎屏狀態
    UIBarMetricsCompact,//橫屏狀態
};
//設置導航欄的陰影圖片
@property(nullable, nonatomic,strong) UIImage *shadowImage;
//設置導航欄的標題字體屬性
@property(nullable,nonatomic,copy) NSDictionary<NSString *,id> *titleTextAttributes;
標題字體屬性會影響到導航欄的中間標題,如下:

bar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor redColor]};

201662792809634.png (211×98)

我們也可以通過下面的屬性設置導航欄標題的豎直位置偏移:

- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics;
- (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics;
還有一個細節,導航欄左側pop按鈕的圖案默認是一個箭頭,我們可以使用下面的方法修改:

@property(nullable,nonatomic,strong) UIImage *backIndicatorImage;
@property(nullable,nonatomic,strong) UIImage *backIndicatorTransitionMaskImage;
4、導航欄中item的push與pop操作

UINavigationBar上面不只是簡單的顯示標題,它也將標題進行了堆棧的管理,每一個標題抽象為的對象在iOS系統中是UINavigationItem對象,我們可以通過push與pop操作管理item組。

//向棧中添加一個item,上一個item會被推向導航欄的左側,變為pop按鈕,會有一個動畫效果
- (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated;
//pop一個item
- (nullable UINavigationItem *)popNavigationItemAnimated:(BOOL)animated;
//當前push到最上層的item
@property(nullable, nonatomic,readonly,strong) UINavigationItem *topItem;
//僅次于最上層的item,一般式被推向導航欄左側的item
@property(nullable, nonatomic,readonly,strong) UINavigationItem *backItem;
//獲取堆棧中所有item的數組
@property(nullable,nonatomic,copy) NSArray<UINavigationItem *> *items;
//設置一組item
- (void)setItems:(nullable NSArray<UINavigationItem *> *)items animated:(BOOL)animated;
5、UINavigationBarDelegate

在UINavigationBar中,還有如下一個屬性:

@property(nullable,nonatomic,weak) id<UINavigationBarDelegate> delegate;
通過代理,我們可以監控導航欄的一些push與pop操作:

//item將要push的時候調用,返回NO,則不能push
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item;
//item已經push后調用
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item;
//item將要pop時調用,返回NO,不能pop 
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item;
//item已經pop后調用
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item;

二、工具欄UIToolBar
導航欄一般會出現在視圖的頭部,與之相對,工具欄一般會出現在視圖的的底部,上面可以填充一些按鈕,提供給用戶一些操作。創建一個工具欄如下:
self.view.backgroundColor = [UIColor grayColor];
UIToolbar * tool = [[UIToolbar alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-40, 320, 40)];
[self.view addSubview:tool];

201662792902461.png (206×399)

下面是UIToolBar中的一些方法,其中大部分在UINavigationBar中都有涉及,這里只做簡單的介紹:

//工具欄的風格,和導航欄類似,有黑白兩種
@property(nonatomic) UIBarStyle barStyle;
//設置工具欄上按鈕數組
@property(nullable,nonatomic,copy) NSArray<UIBarButtonItem *> *items;
//設置工具欄是否透明
@property(nonatomic,assign,getter=isTranslucent) BOOL translucent;
//設置工具欄按鈕
- (void)setItems:(nullable NSArray<UIBarButtonItem *> *)items animated:(BOOL)animated;
//設置item風格顏色
@property(null_resettable, nonatomic,strong) UIColor *tintColor;
//設置工具欄背景色
@property(nullable, nonatomic,strong) UIColor *barTintColor;
//設置工具欄背景和陰影圖案
- (void)setBackgroundImage:(nullable UIImage *)backgroundImage forToolbarPosition:(UIBarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics;
- (nullable UIImage *)backgroundImageForToolbarPosition:(UIBarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics;
- (void)setShadowImage:(nullable UIImage *)shadowImage forToolbarPosition:(UIBarPosition)topOrBottom;
- (nullable UIImage *)shadowImageForToolbarPosition:(UIBarPosition)topOrBottom;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美最猛黑人xxxx黑人猛叫黄| 神马久久久久久| 久久久天堂国产精品女人| 久久久精品中文字幕| 久久精彩免费视频| 日韩免费观看av| 国产91免费观看| 国产丝袜精品第一页| 亚洲第一色中文字幕| 欧美日韩激情视频8区| 狠狠操狠狠色综合网| 日韩一区二区三区国产| 精品久久久久久久久久| 久久精品视频在线播放| 国产亚洲精品va在线观看| 少妇高潮久久久久久潘金莲| 亚洲成人久久久久| 在线免费观看羞羞视频一区二区| 最近2019中文字幕一页二页| 97国产真实伦对白精彩视频8| 国产69精品久久久| 国产精品久久婷婷六月丁香| 中文字幕在线看视频国产欧美在线看完整| 亚洲夜晚福利在线观看| 国产美女精品视频免费观看| 国产精品www网站| 国产成人在线亚洲欧美| 欧美电影免费观看网站| 欧美xxxx做受欧美| 在线电影av不卡网址| 精品久久久久久中文字幕大豆网| 国产成人97精品免费看片| 永久555www成人免费| 日韩在线视频网| 欧美日韩中文字幕日韩欧美| 中文字幕亚洲欧美日韩高清| 91国内产香蕉| 97色伦亚洲国产| 亚洲色图狂野欧美| 国产成人综合久久| 亚洲欧美一区二区精品久久久| 国产丝袜一区视频在线观看| 91精品国产高清久久久久久91| 午夜精品免费视频| 97人人模人人爽人人喊中文字| 国产日韩欧美影视| 精品久久久在线观看| 国产不卡av在线| 欧洲成人免费aa| 97涩涩爰在线观看亚洲| 亚洲影视九九影院在线观看| 久久久之久亚州精品露出| 国产精品吹潮在线观看| 国产91精品久久久| 亚洲视频精品在线| 亚洲精品久久7777777| 精品国产自在精品国产浪潮| 亚洲久久久久久久久久| 国产成人免费av| 欧美成人精品在线播放| 97精品免费视频| 亚洲黄页网在线观看| 欧美高跟鞋交xxxxhd| 欧美另类极品videosbestfree| 亚洲欧美视频在线| 国产va免费精品高清在线观看| 97热精品视频官网| 亚洲欧美国产日韩中文字幕| 高清欧美性猛交xxxx黑人猛交| 国产精品免费视频久久久| 久久久久久国产精品久久| 97在线视频免费播放| 大桥未久av一区二区三区| 热久久这里只有精品| 一区二区三区视频观看| 久久国产精品久久久久久| 亚洲精品短视频| 久久天天躁狠狠躁夜夜爽蜜月| 欧美大片免费观看| 国产亚洲激情视频在线| 国产视频精品免费播放| 国产精品久久久久久久久久ktv| 91国产精品电影| 欧美乱大交xxxxx| 日韩精品视频在线观看免费| 91精品国产91| 91亚洲精华国产精华| 日韩av手机在线看| 亚洲午夜小视频| 久久天天躁狠狠躁夜夜av| 亚洲欧美中文字幕| 久久成人精品视频| 欧美激情精品久久久久久| 欧美激情一级欧美精品| 欧美在线视频在线播放完整版免费观看| 亚洲在线观看视频网站| 中文字幕亚洲一区二区三区五十路| 成人精品久久一区二区三区| 成人午夜在线视频一区| 少妇av一区二区三区| 欧美日韩在线视频一区二区| 国产一区二区三区在线| 日韩电影中文字幕一区| 国产一区二区三区在线播放免费观看| 国内精品伊人久久| 992tv成人免费视频| 5566成人精品视频免费| 91超碰中文字幕久久精品| 国产精品女主播| 亚洲自拍欧美色图| 欧美激情视频播放| 91精品综合视频| 国产日韩中文在线| 久久精品亚洲94久久精品| 亚洲欧美中文日韩v在线观看| 亚洲影院色无极综合| 97婷婷大伊香蕉精品视频| 欲色天天网综合久久| 欧美性xxxx极品hd满灌| 久久人人爽人人爽爽久久| 中文字幕欧美视频在线| 亚洲乱码国产乱码精品精天堂| 亚洲欧美国产高清va在线播| 91日韩在线视频| 欧美成人一二三| 中文字幕国产亚洲| 2020欧美日韩在线视频| 91精品视频免费看| 国产精品爽爽ⅴa在线观看| 久久精品一偷一偷国产| 韩国日本不卡在线| 97视频国产在线| 久久噜噜噜精品国产亚洲综合| 国产亚洲欧洲高清一区| 国产日韩av在线| 亚洲男人的天堂在线| 亚洲国内精品视频| 欧美激情精品在线| 欧美一区二区三区……| 日本一本a高清免费不卡| 福利精品视频在线| 色老头一区二区三区| 国产精品成人v| 亚洲欧美中文字幕在线一区| 91精品在线播放| 中文字幕精品在线视频| 国模极品一区二区三区| 国内揄拍国内精品少妇国语| 91国产精品91| 国产精品高潮呻吟视频| 精品日韩美女的视频高清| 久久久久久国产免费| 福利视频第一区| 欧美激情亚洲视频| 欧美一区三区三区高中清蜜桃| 欧美日韩电影在线观看| 亚洲成人黄色网址| 欧美色另类天堂2015| 欧美激情第99页| 日韩中文字幕网址| 国产精品丝袜一区二区三区| 欧美寡妇偷汉性猛交| 日韩国产欧美区| 亚洲欧洲第一视频|