日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何完全自定义NavigationBar

發(fā)布時間:2025/3/20 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何完全自定义NavigationBar 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  NavigationBar是很常用的一個元素,所以常常需要進行自定義操作,而一種比較直觀的方式就是,先定義一個類NavigationBar繼承自UINavigationBar,而這個NavigationBar的內部內容則是比較復雜的了,里面添加我們需要的所有的navigationBar 的樣式,而且使得這些view的尺寸都是整個NavigationBar的尺寸,然后再進行內部view的構建就可以了,而需要進行切換的時候就進行這些view之間的顯示和隱藏的切換就可以了,最好使用一些動畫,前面的文中有提供動畫流暢的保證方式,現(xiàn)在新建一個HomeNavigationController 繼承自UINavigationController,并且在這個類的實現(xiàn)中這樣操作

@implementation HomeNavigationController -(instancetype)init {self = [super initWithNavigationBarClass:[Navigationbar class] toolbarClass:nil];if (self) {self.delegate = self;}return self; }

這樣的話就將HomeNavigationController的導航欄的樣式進行了確定了。而為了能進行子控制器的導航欄的正確顯示,最好在HomeNavigationController中聲明一個

@protocol SecretPresentableViewController <NSObject>@optional - (void)willPresentWithNavigationBar:(Navigationbar *)navigationBar; @end

而那些想要擁有這個導航欄的自控制器只需要實現(xiàn)協(xié)議就可以了,而NavigationBar中的多個view的左右按鈕以及中間都可以完全的自定義了,而事件 的傳遞則使用block的方式,這里提供其中一個自定義view的h定義方式

@interface HomeNavigationView : UIView @property(nonatomic, copy) void (^didTapComposeBlock)(void); @property(nonatomic, copy) void (^didTapNotificationsBlock)(void); @property(nonatomic, copy) void (^didTapChatBlock)(void); @property(nonatomic, copy) void (^didTapScrollToTopBlock)(void); @property(nonatomic, copy) void (^didTapNewThemeTopBlock)(void);@property (nonatomic, strong) UILabel* titleLabel; @property (nonatomic, strong) UIButton *tipsNewThemeBtn; @property (nonatomic, strong) UIButton *unreadLeftV; @end

而在m文件中只要對按鈕添加監(jiān)聽就可以了,例子是

#pragma private -(void)left:(id)sender {if (_didTapNotificationsBlock) _didTapNotificationsBlock();}

在擁有navigationBar 的控制器中對具體的block進行處理

navigationBar.homeNavigationView.didTapNotificationsBlock = ^{[self left:nil];};

而里面使用的這個left:方法則正是這個控制器中的具體的處理方法(push,modal,或者按鈕的消失,lable的隱藏等等的點擊相應等等),這樣的話就實現(xiàn)了自定義bar的同時而且實現(xiàn)了bar和控制器之間的無縫銜接。更加方便的進行自定義的操作,但同時也可以完全實現(xiàn)系統(tǒng)提供bar的所有功能等等,而這個具體的實現(xiàn)過程很有可能就是apple自己內部的實現(xiàn)方式,因為apple很推薦我們使用block而這種bar和viewcontrol的傳遞消息的方式感覺這是最優(yōu)秀的了。

轉載于:https://www.cnblogs.com/azxfire/p/4095487.html

總結

以上是生活随笔為你收集整理的如何完全自定义NavigationBar的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。