mPaaS 10.1.60 H5容器中NavBar修改的問題

時間定位: 2019.12.23
升級60-beta之后,發(fā)現(xiàn)10.1.32中對navBar做的修改,比如返回按鈕,右邊按鈕做的自定義修改失效了,經(jīng)過和mPaaS溝通,總結(jié)修改方式如下:

自定義Plugin

  1. 自定義Plugin 繼承NBPluginBase
@interface H5Plugin4NavigationBar: NBPluginBase
@end
  1. 監(jiān)聽事件
    [self.target addEventListener:kNBEvent_Scene_NavigationItem_Left_Back_Create_After
                     withListener:self
                       useCapture:NO];
  1. 在對應(yīng)事件中做處理

返回按鈕

if ([kNBEvent_Scene_NavigationItem_Left_Back_Create_After isEqualToString:event.eventType]) {
        //MARK: 更改已創(chuàng)建LeftBarItem的樣式
        
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        [btn setFrame:CGRectMake(0, 0, 44, 44)];
        [btn setImage:[UIImage imageNamed:@"header-back"] forState:UIControlStateNormal];
        [btn setTitle:@"  " forState:UIControlStateNormal];
        [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        
        [btn addTarget:event.context.currentViewController action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
        NSArray *leftBarButtonItems = event.context.currentViewController.navigationItem.leftBarButtonItems;
        NSMutableArray *arr = [NSMutableArray arrayWithArray:leftBarButtonItems];
        [arr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(UIBarButtonItem*  _Nonnull item, NSUInteger idx, BOOL * _Nonnull stop) {
            if ([item isKindOfClass:[AUBarButtonItem class]]) {
                [arr removeObject:item];
                [arr addObject:backItem];
                *stop = YES;
            }
        }];
        [event.context.currentViewController.navigationItem setLeftBarButtonItems:arr];
        [event preventDefault];
    }

關(guān)閉按鈕,關(guān)閉按鈕修改方式應(yīng)該和返回一樣,這邊只是屏蔽關(guān)閉按鈕

    if ([kNBEvent_Scene_NavigationItem_Left_Close_Create_Before isEqualToString:event.eventType]) {
        //MARK: 更改已創(chuàng)建LeftBarItem的樣式
        NBNavigationItemEvent *e = (id)event;
        e.customView = nil;
        [e preventDefault];
    }

標題欄

以前是這樣的

//10.1.32 中標題欄的修改方式是這樣的,60-beta中改了
if ([kNBEvent_Scene_TitleView_Create_After isEqualToString:event.eventType]) {
        //MARK: 更改已創(chuàng)建TitleView的樣式
        NBNavigationTitleViewEvent *e = (id)event;
        [[e.titleView mainTitleLabel] setFont:[UIFont systemFontOfSize:18]];
        [[e.titleView mainTitleLabel] setTextColor:[UIColor blackColor]];
    }

60-beta中是下面這個樣子

    id <NBNavigationTitleViewProtocol> titleView = (NBNavigationTitleView *)self.navigationItem.titleView;
    [[titleView mainTitleLabel] setFont:[UIFont systemFontOfSize:9]];
    [[titleView mainTitleLabel] setTextColor:[UIColor redColor]];

右按鈕

    BOOL isNebulaApp = [expandParams[@"isNebulaApp"] isEqualToString:@"1"];
  //這邊的isNebulaApp用來控制入口是小程序還是普通h5APP,mPaaS未提供容器內(nèi)判斷是小程序還是H5包的方法,只能通過啟動時傳參來判斷
    UIBarButtonItem * rightItem = self.navigationItem.rightBarButtonItems.firstObject;
    if (isNebulaApp && rightItem) {
        UIButton * rightButton = (UIButton *)rightItem.customView;
        [rightButton setBackgroundImage:[UIImage imageNamed:@"shouye-hei"] forState:(UIControlStateNormal)];
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,684評論 1 11
  • 讓裝修不再是難事 昨天在朋友圈上看到朋友再回江南發(fā)的一個朋友圈《共克時艱》留言上調(diào)侃的說“聽說又要共...
    灞水一方閱讀 188評論 0 0
  • 海崖文學(xué) 內(nèi)容來源:海崖文學(xué) 生命里的詩篇 作者:曾祥國殘紅 寫下 沉寂的獨白 留下一天地的喧嘩 焚毀春天和秋...
    曾祥國殘紅閱讀 379評論 0 6
  • 李煜,五代十國時南唐國君,開寶八年,宋軍破南唐都城,李煜降宋,被俘至汴京,封為右千牛衛(wèi)上將軍、違命侯。后被宋太宗毒...
    漢唐雄風(fēng)閱讀 582評論 0 1
  • 桌子上昨天還色澤鮮嫩欲滴的火龍果,今天就長滿了褐色的斑,完全壞掉了,天氣又不熱,而我挑選它的時候,亦是非常用心,所...
    我的優(yōu)雅紅姐姐閱讀 315評論 4 1

友情鏈接更多精彩內(nèi)容