范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

技术干货Native页面下如何实现导航栏的定制化开发?

  很多 mPaaS Coder 在接入 H5 容器后都会对容器的导航栏进行深度定制,本文旨在通过不同实际场景的描述,供大家参考完成 Native 页面的定制化开发。 Native 修改导航栏左侧返回按钮
  (一)自定义 NBPluginBase 插件中修改
  1.自定义原生 BarButtonItem
  监听 kNBEvent_Scene_NavigationItem_Left_Back_Create_Before,在此监听事件中设置自定义 BarButtonItem  //监听kNBEvent_Scene_NavigationItem_Left_Back_Create_Before,在此监听事件中:  UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 44, 44); button.backgroundColor = [UIColor whiteColor]; [button setTitle:@"取消" forState:UIControlStateNormal]; button.titleLabel.font = [UIFont systemFontOfSize:14.0]; [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];       event.context.currentViewController.navigationItem.leftBarButtonItem.customView = button;
  注:此方案自定义button,需要自行实现关闭页面逻辑。
  2.修改返回按钮
  监听 kNBEvent_Scene_NavigationItem_Left_Back_Create_After,在此监听事件中修改默认返回按钮样式,包括文案颜色、返回箭头等,文案内容默认不可修改。  //监听kNBEvent_Scene_NavigationItem_Left_Back_Create_After,在此监听事件中: // 修改返回按钮样式 NSArray *leftBarButtonItems = event.context.currentViewController.navigationItem.leftBarButtonItems; if ([leftBarButtonItems count] == 1) {     if (leftBarButtonItems[0] && [leftBarButtonItems[0] isKindOfClass:[AUBarButtonItem class]]) {         //在默认返回按钮基础上,修改返回箭头和文案颜色         AUBarButtonItem *backItem = leftBarButtonItems[0];         backItem.backButtonColor = [UIColor greenColor];         backItem.titleColor = [UIColor orangeColor];// [UIColor colorFromHexString:@"#00ff00"];         //隐藏、显示返回箭头         backItem.hideBackButtonImage = NO;         //backItem.backButtonTitle; 标题内容更改无效。                                 // 隐藏返回文案:文案设置为透明,保留返回按钮 s 点击区域         //backItem.titleColor = [UIColor clearColor];     } }
  (二)H5容器中自定义修改
  1.方式一,在 viewWillAppear 获取自定义启动参数,根据参数自定义返回按钮。  - (void)viewWillAppear:(BOOL)animated {     [super viewWillAppear:animated];     // 当前页面的启动参数     NSDictionary *expandParams = self.psdScene.createParam.expandParams;     NSLog(@"[mpaas] expandParams: %@", expandParams); }
  获取启动参数后,依据自定义参数实现自定义按钮。 // 修改默认返回按钮文案颜色     NSString *backButtonColorString = expandParams[@"backButtonColor"];     if ([backButtonColorString isKindOfClass:[NSString class]] && [backButtonColorString length] > 0) {         UIColor *backButtonColor = [UIColor colorFromHexString:backButtonColorString];         NSArray *leftBarButtonItems = self.navigationItem.leftBarButtonItems;         if ([leftBarButtonItems count] == 1) {             if (leftBarButtonItems[0] && [leftBarButtonItems[0] isKindOfClass:[AUBarButtonItem class]]) {                 backItem.backButtonTitle = @"测试";// 返回按钮title                 backItem.titleColor = backButtonColor;// 返回按钮文本颜色                 backItem.backButtonColor = [UIColor blueColor];// 设置箭头颜色                 backItem.hideBackButtonImage = NO;//隐藏返回按钮图片,提供给框架使用                 // 返回按钮图片 backItem.backButtonImage; 设置无效,只可隐藏or显示             }         }     }
  2.方式二,可以在 viewWillAppear 自定义整个返回区域 AUBarButtonItem 按钮、个数:  AUBarButtonItem *backItem = [AUBarButtonItem barButtonItemWithIconFontName:kICONFONT_BACK iconColor:[UIColor lightGrayColor] target:self action:@selector(custBack:)];    AUBarButtonItem *backItem = [AUBarButtonItem backBarButtonItemWithTitle:@"测试" backArrowColor:[UIColor redColor] target:self action:@selector(custBack:)]; backItem.customView.frame = CGRectMake(0, 0, 44, 44);          AUBarButtonItem *closeItem = [AUBarButtonItem barButtonItemWithIconFontName:kICONFONT_SYSTEM_CANCEL_BOLD iconColor:[UIColor lightGrayColor] target:self action:@selector(custClose:)]; closeItem.customView.frame = CGRectMake(0, 0, 30, 44);          self.navigationItem.leftBarButtonItems = @[backItem,closeItem];
  如果要修改 BarButtonItem 的文字大小、颜色等深度定制可以参考以下代码:  UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 40, 40); [button setTitle:@"我的" forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [button setBackgroundColor: [UIColor whiteColor]]; button.titleLabel.font = [UIFont systemFontOfSize:14.0f]; AUBarButtonItem *backItem = [[AUBarButtonItem alloc] initWithCustomView:button];//返回按钮事件 - (void)custBack:(id)sender{     NSLog(@"back -----");     [self back]; } //关闭所有session - (void)custClose:(id)sender{     NSLog(@"close   ------");     NSArray *sessions = [[NBContext sharedContext] sessions];     for (NBSession* session in sessions) {         [[NBContext sharedContext] exitSession:session animated:YES];     } }Native 修改导航栏左侧关闭按钮
  (一)在自定义 NBPluginBase 插件中关闭按钮需自行创建
  监听 kNBEvent_Scene_NavigationItem_Left_Close_Create_Before,在此监听事件中创建关闭按钮。  //监听kNBEvent_Scene_NavigationItem_Left_Close_Create_Before,在此监听事件中: // 创建关闭按钮 [event preventDefault]; NBNavigationItemLeftCloseEvent *itemEvent = (NBNavigationItemLeftCloseEvent *)event; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 44, 44); button.backgroundColor = [UIColor whiteColor]; [button setTitle:@"关闭" forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; itemEvent.customView = button;
  监听kNBEvent_Scene_NavigationItem_Left_Close_Create_After,在此监听事件中修改关闭按钮样式。  //监听kNBEvent_Scene_NavigationItem_Left_Close_Create_After,在此监听事件中: // 修改关闭按钮样式 [event preventDefault]; NBNavigationItemLeftCloseEvent *itemEvent = (NBNavigationItemLeftCloseEvent *)event; UIButton *closeButton = (UIButton *)itemEvent.customView; [closeButton setTitle:@"关闭" forState:UIControlStateNormal]; [closeButton setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];Native 修改导航栏标题
  (一)在viewWillAppear 获取自定义启动参数,根据参数自定义标题 //打开H5离线包 NSString *appId = @"20190927";     [[MPNebulaAdapterInterface shareInstance]startH5ViewControllerWithNebulaApp:@{@"appId":appId,@"defaultTitle":@"测试",@"readTitle":@"NO",@"titleColor":@"ff0000",@"titleFont":@"18.0"}];//启动参数设置标题文案、颜色、大小;
  这里的参数key值appId、defaultTitle、readTitle为框架默认不可修改,其余参数 key 值自定义。  - (void)viewWillAppear:(BOOL)animated {     [super viewWillAppear:animated];     // 当前页面的启动参数     NSDictionary *expandParams = self.psdScene.createParam.expandParams;     NSLog(@"[mpaas] expandParams: %@", expandParams);          // 设置导航栏标题     NSString *titleColorString = expandParams[@"titleColor"];     NSString *titleFont = expandParams[@"titleFont"];     if ([titleColorString isKindOfClass:[NSString class]] && [titleColorString length] > 0 && [titleFont length] > 0) {         UIColor *titleColor = [UIColor colorFromHexString:titleColorString];         id titleView =          self.navigationItem.titleView;         [[titleView mainTitleLabel] setTextColor:titleColor];                  float font = [titleFont floatValue];         [[titleView mainTitleLabel] setFont:[UIFont systemFontOfSize:font]];              } }Native 修改导航栏右侧按钮
  (一)NBPluginBase 插件中自定义修改
  1.在 NBPluginBase 中
  监听 kNBEvent_Scene_NavigationItem_Right_Setting_Create_Before,在此监听事件中创建导航栏右侧按钮。  //监听kNBEvent_Scene_NavigationItem_Right_Setting_Create_Before,在此监听事件中: NBNavigationItemRightSettingEvent *settingEvent = (id)event; settingEvent.adjustsWidthToFitText = YES; settingEvent.maxWidth = [UIScreen mainScreen].bounds.size.width / 4.0f; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 33, 40); [button setTitle:@"设置" forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [button setBackgroundColor: [UIColor whiteColor]]; settingEvent.customView = button; [event preventDefault];
  2.在 NBPluginBase 中
  监听kNBEvent_Scene_NavigationItem_Right_Setting_Create_After,在此监听事件中修改导航栏右侧按钮。  //监听kNBEvent_Scene_NavigationItem_Right_Setting_Create_After,在此监听事件中: NBNavigationItemRightSettingEvent *settingEvent = (id)event; settingEvent.adjustsWidthToFitText = YES; settingEvent.maxWidth = [UIScreen mainScreen].bounds.size.width / 4.0f; UIButton *button = settingEvent.customView; button.titleLabel.font = [UIFont systemFontOfSize:14.0f]; button.frame = CGRectMake(0, 0, 40, 40); [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; [button setBackgroundColor: [UIColor whiteColor]]; [event stopPropagation];//去掉默认按钮图片
  注:
  1. 在插件中自定义导航栏右侧按钮,必须要在打开H5容器的启动参数中设置@{@"showOptionMenu": @"YES"} 否则设置右侧按钮无效。
  2. 必须要在kNBEvent_Scene_NavigationItem_Right_Setting_Create_After监听事件中实现[event stopPropagation];否则showOptionMenu按钮的默认图片没有办法去掉。
  (二)H5 容器中自定义修改
  1.在 viewWillAppear 获取自定义启动参数,根据参数自定义设置 AUBarButtonItem按钮。
  (1)图片样式:  AUBarButtonItem *rightItem1 = [[AUBarButtonItem alloc] initWithImage:image1 style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed1)]; AUBarButtonItem *rightItem2 = [[AUBarButtonItem alloc] initWithImage:image2 style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed2)]; //单个按钮 self.navigationItem.rightBarButtonItem = rightItem1; //多个按钮 self.navigationItem.rightBarButtonItems = @[rightItem1, rightItem2];
  (2)文字样式:  AUBarButtonItem *titleItem1 = [[AUBarButtonItem alloc]initWithTitle:@"按钮" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed1)]; AUBarButtonItem *titleItem2 = [[AUBarButtonItem alloc]initWithTitle:@"右侧" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed2)]; //单个按钮 self.navigationItem.rightBarButtonItem = rightItem1; //多个按钮 self.navigationItem.rightBarButtonItems = @[titleItem1, titleItem2];
  2.如果要修改 BarButtonItem 的文字大小、颜色等深度定制参考以下代码:  UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0, 0, 40, 40); [button setTitle:@"我的" forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [button setBackgroundColor: [UIColor whiteColor]]; button.titleLabel.font = [UIFont systemFontOfSize:14.0f]; AUBarButtonItem *rightItem = [[AUBarButtonItem alloc] initWithCustomView:button];Native 自定义导航栏
  (一)隐藏原生导航栏
  自定义导航栏,要先隐藏原生导航栏。  //隐藏容器类navBar self.options.showTitleBar = NO; //隐藏系统层navBar [self.navigationController setNavigationBarHidden:YES];
  (二)创建 navBarView 创建 AUCustomNavigationBar 初始化方法必须要 navigationBarForCurrentVC: 否则按钮设置无效。  赋值给 self.customNavigationBar 容器会自动适配H5页面高度,否则需自行适配页面。  //创建navBarView,必须要用此方法 AUCustomNavigationBar *navBar = [AUCustomNavigationBar navigationBarForCurrentVC:self]; [self.view addSubview:navBar]; //设置给容器VC self.customNavigationBar = navBar;
  (三)自定义背景样式
  设置背景色、渐变色等,setNavigationBarBlurEffective 设置毛玻璃效果,支持更多样式自选。  //设置背景颜色,渐变色可自行设置 navBar.backgroundColor = [UIColor lightGrayColor]; [navBar setNavigationBarBlurEffectiveWithStyle:UIBlurEffectStyleDark]; // 毛玻璃效果,更多样式自选
  (四)设置左侧导航按钮
  1.设置左侧导航按钮方式一:  //导航左侧按钮 navBar.backButtonTitle = @"取消"; navBar.backTitleLabel.font = [UIFont systemFontOfSize:16.0]; navBar.backButtonTitleColor = [UIColor orangeColor]; navBar.backButtonImage = [UIImage imageNamed:@"back_button@2x"]; [navBar addSubview:navBar.leftItem];
  2.设置左侧导航按钮,自行关联事件方式二,与方式一冲突,两者选其一。  //自行关联事件方式,与上述属性设置冲突。 //image和title两者选其一 [navBar setNavigationBarLeftItemWithImage:[UIImage imageNamed:@"back_button@2x"]target:self action:@selector(leftItemImageClick)]; [navBar setNavigationBarLeftItemWithTitle:@"取消" target:self action:@selector(leftItemTitleClick)];
  (五)设置导航栏标题
  1.设置导航栏标题方式一:  //设置导航栏标题 navBar.title = @"标题"; navBar.titleColor = [UIColor redColor]; navBar.titleLabel.font = [UIFont systemFontOfSize:14.0];
  2.设置导航栏标题,AUDoubleTitleView双标题titleView方式二:  //设置双标题titleView AUDoubleTitleView *titleView = [[AUDoubleTitleView alloc]initWithTitle:@"主标题" detailTitle:@"副标题"]; navBar.titleView = titleView; //这里使用了mPaaS下双标题UI,也可自行实现titleView
  (六)设置导航栏右侧按钮
  1.单个右侧按钮
  (1)设置单个按钮方式一:  //设置导航右侧按钮 navBar.rightItemTitle = @"菜单"; navBar.rightItemTitleColor = [UIColor blackColor]; //image和title两者选其一 navBar.rightItemImage = [UIImage imageNamed:@"rightTT@2x"];
  (2)设置单个按钮方式二:  //自行关联事件方式 //image和title两者选其一 [navBar setNavigationBarRightItemWithTitle:@"菜单" target:self action:@selector(rightItemTitleClick)]; [navBar setNavigationBarRightItemWithImage:[UIImage imageNamed:@"rightTT@2x"] target:self action:@selector(rightItemImageClick)];
  2.深度自定义单、多个右侧按钮
  深度自定义右侧按钮、文字、大小、图片,自行关联事件。  //深度自定义右侧按钮、文字、大小、图片、关联事件 AUButton *button = [AUButton buttonWithStyle:AUButtonStyleNone title:@"右一" target:self action:@selector(rightItemTitleClick)]; button.titleLabel.font = [UIFont systemFontOfSize:16.0]; [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];      AUButton *button1 = [AUButton buttonWithStyle:AUButtonStyleNone]; [button1 setImage:[UIImage imageNamed:@"rightTT@2x"] forState:UIControlStateNormal]; navBar.rightItemList = @[button,button1];
  作者:阿里云 mPaaS TAM 团队(石鹏飞 荣阳)
  原文链接:http://click.aliyun.com/m/1000298581/
  本文为阿里云原创内容,未经允许不得转载。

政策力促,人工智能产业发展迎来春天!来源中证网原标题政策力促人工智能产业发展2月21日,科技部网站公布科技部关于支持北京建设国家新一代人工智能创新发展试验区的函,明确试验区建设要探索新一代人工智能发展的新路径新机制,对比网吧的前后10年,通宵的人越来越少,杀马特也很少见了本文章已经通过区块链技术进行版权认证,禁止任何形式的改编转载抄袭,违者追究法律责任随着网络游戏的迅速发展,网吧的形式也是越来越多种多样,比如现在的竞技网吧网咖等等,网吧已经不再是只5G大约什么时间能普及?现在买4G手机还有必要吗?很高兴来回答你的问题,看了上面的所有回答感觉都没有抓住重点!都是来赚流量的!希望我的回答能解决你的问题!先说下本人的工作,本人在中国移动上班!隶属于数据传输部门!一个名不见传的中国售价3500美元,微软发布第二代HoloLens,视场角扩大一倍MWC除了5G手机之外,还有混合现实硬件。今年的MWC可谓热闹非凡,除了各大手机厂商扎堆推出5G手机之外,微软也扔出了一个重磅炸弹时隔四年,它们推出了混合现实设备HoloLens2AMD发布首款锐龙笔记本显卡驱动游戏性能大涨17Ryzen锐龙时代,AMD平台笔记本日渐丰富起来,给了消费者更多选择,但很多产品上市一年多了却从来没有显卡驱动更新。AMD回应称,笔记本显卡驱动以往都是OEM厂商自行定制,但承诺会不要紧盯小米9,小米发布会上还有最强新品,售价仅为149元!小米9发布会我们把目光全部聚集在了小米9的身上,作为一款年度机型小米9受到关注是理所应当的,小米9无论是在颜值还是在性能上完全符合小米内部代号战斗天使,雷军还坦言小米9是至今为止最华为MateX折叠手机正式发布售价2299欧元华为正式公布了旗下首款可折叠手机华为MateX。华为MateX采用柔性折叠屏,采用可折叠全面屏设计,展开时可达8英寸,无限拓款视野的边界。轻轻翻折,又能成为可单手掌控的6。6英寸屏苹果悄然生产iPhoneX主攻中国线下渠道售价6千元档来源硅谷分析狮2月24日,产业链给出的最新爆料称,苹果已经悄然重启了iPhoneX的生产工作,而跟之前发售策略不同的是,这款手机被重新大规模生产后,主要在国内线下渠道销售,主攻60华为大神级手机到!5G折叠屏售价17500元6月上市2月24日晚间,悬念十足的华为5G折叠屏手机终于揭开面纱,华为将其归到Mate系列,命名为HUAWEIMateX。MateX售价2299欧元,约合人民币17500元,相比三星的折叠微信绑定银行卡后务必检查这个功能,建议及时关闭,谨防钱财丢失随着科技的飞速发展,互联网发展的也是越来越迅速,我们也是进入到了网络时代,而对于用户而言,如今社交软件也是不断兴起,用户和外界的联系也是方便了很多,而且随着科技的不断进步,移动端支让所有电脑畅玩游戏大作?谷歌下月发布会或将揭晓重磅黑科技想要了解更多热门资讯玩机技巧数码评测科普深扒,可以点击右上角关注我们的头条号雷科技随着网络尤其是移动互联网的发展,流媒体服务开始出现并流行起来。不管是音乐还是视频,我们都越来越习惯
赵明回应美国可能将荣耀列入实体清单,透露将重回高端挑战苹果来源中国经济周刊经济网中国经济周刊经济网讯(记者孙冰)新荣耀重回高端的大杀器终于来了。8月12日,荣耀Magic3系列正式发布。Magic系列一直是荣耀探索未来的高端旗舰产品,于2苹果手机游戏评测今天看了很多网上游戏评测的视频,突然想到一个问题,为什么每一个评测的博主都只是简单的评测,每一次评测时间都不会超过半个小时,尤其是到了夏天温度比较高的时候这种评测有用吗?我只想说对不给苹果打工了!欧菲光1亿像素7P镜头已量产打入国产供应链随着智能手机摄像头像素的持续提高,光学镜头从初期的24片塑料镜头,发展到7P8P镜头。随着拍照的进一步升级,潜望式镜头TOF镜头等也开始逐步渗透,成为光学成长的新动力。据悉,欧菲光9月可能会鸽!苹果或将11月发布新款MacBook近日彭博社表示,由于今年的供应链短缺问题,新款的14英寸和16英寸MacBookPro可能将会在11月发布(而不是与iPhone13同步的9月),11月正好是16英寸MacBook苹果iPhone13系列迎来3大升级,国行版本5499元起,加量不加价?每年的秋季,都是各家手机厂商发布自家旗舰产品的黄金时间。其中关注度最高的可能就是华为苹果小米这几家手机厂商了。随着智能手机的不断发展,苹果的秋季发布会即将召开,发布会的时间很大可能骁龙865,骁龙870,骁龙860是什么东西?小米平板5,后摄很像小米11很有辨识度。小米最近推出了小米平板5搭载骁龙860处理器,8720mAh电池,支持33W快充,6128G仅需要1999备受追捧,那么骁龙860是什么处理数据安全法落地在即!魅族未雨绸缪!竟提前站上千亿市场风口为什么在某电商平台上的同一款产品,我买就要比别人更贵几块钱?原以为是别人是有优惠券,没曾想人家从搜索界面看到的价格就已经比我低了!为什么在某打车软件上,我打车总感觉比其他人要贵!是用科技描绘上古神力,华为山海经神兽主题背后的故事来源读特华为新上线了一套山海经神兽主题,把火龙鲲鹏麒麟青牛驳鸿鹄等六只上古神兽搬进了手机手表平板等设备,以丰富的色彩细腻的笔触,再现上古神兽的磅礴气势,也展现了华为设计师眼中神兽的字节诉争头条相关商标二审被驳回据天眼查APP显示,近日,北京字节跳动科技有限公司与国家知识产权局二审行政判决书公开,案号(2021)京行终3271号,审理法院为北京市高级人民法院。判决书显示,一审法院认为,字节苹果发布新版iCloudforWindows增加钥匙串密码管理应用苹果公司今天发布了新版iCloudforWindows应用,12。5版更新为Windows用户增加了新的iCloud钥匙串密码管理应用。使用新的密码管理选项,运行Windows的用三星员工炒比特币净赚2。3亿,直接炒老板鱿鱼据boss广播,三星一名员工的辞职信在韩国引起了热烈讨论。这名员工辞职的原因是,他通过投资虚拟货币获得了400多亿韩元(约2。3亿元)的净利润,因此他选择离开并享受生活。虽然还没有