使用 NativeScript 自定义 iOS 导航栏和状态栏

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

随着我对 NativeScript 的了解越来越多,我真正投入的首要任务之一是学习如何为 iOS 应用程序自定义导航栏。 NativeScript 在路线图上有一个 Navbar 组件,但就目前而言,它需要一些关于 UINavigationControllers UIViewControllers 等的底层 iOS 实现的知识。但不要害怕!我曾冒过 StackOverflow 和 Objective-C 文档的险恶水域,最终毫发无损地取得了胜利。

在本文中,我将介绍您可能需要对导航栏或状态栏进行的一些更常见的调整。虽然 NativeScript 是一个跨平台框架,但这些调整特别适用于 iOS。但是,我将在此处介绍的大部分项目也可以针对 Android 实现。

在学习自定义 Navigation Bar 的过程中,我 从 Simon NG 在 AppCoda 上的这篇帖子 中得到了很多启发。这是一篇很棒的文章,它从 Objective-C 的角度介绍了可以对 iOS 导航栏和状态栏执行的大部分操作。我真的很喜欢帖子的布局方式,所以我将在这里使用大致相同的格式来讨论 NativeScript 中的 iOS 导航栏/状态栏:

  • 显示和隐藏导航栏
  • 设置导航栏标题
  • 隐藏后退按钮
  • 更改导航栏背景颜色
  • 更改标题文本颜色
  • 更改标题文本样式
  • 设置状态栏样式
  • 自定义后退按钮的颜色
  • 隐藏后退按钮
  • 添加新的按钮栏项目

NativeScript 默认导航

NativeScript 将加载的初始页面视为根视图控制器。之后导航到的任何视图都会使用 UINavigationController 推送到导航队列中。这意味着在第一个视图中,您根本看不到导航栏。在每个后续视图中,您会看到它包含一个“< 返回”按钮。

大多数已完成的调整都需要引用 UINavigationController 或当前的 UIViewController。您可以从 frames tns 模块获取对此控制器的引用。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

显示和隐藏导航

框架模块引用允许在任何时间和任何页面上轻松显示/隐藏导航栏。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

设置导航栏标题

更改标题真的很容易。只需使用公开 title 属性的 page.ios 应用程序对象。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

隐藏后退按钮

有时可能需要隐藏后退按钮。在此处使用的示例中,用户使用 OAuth 登录到 Instagram,然后被重定向到提要页面。默认情况下,该提要页面显示一个后退按钮。

这并不理想,因为用户可能会返回到 OAuth 进程,应用程序将中断。隐藏后退按钮需要获取 UIViewController 的导航项的实例,并调用 setHidesBackButtonAnimated 方法。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

更改导航栏背景颜色

默认的 iOS 颜色是可以的,但是没有一个漂亮的、漂亮的自定义导航栏颜色的应用程序是不完整的。使用 setBarTint 方法更改条形颜色。您可以使用 blueColor() 等系统常量,也可以使用 RGBA 定义自定义常量。我使用方便的程序 Sip ,它对颜色进行采样并自动以这种 RGBA 格式提供它们。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

更改标题文本颜色

导航栏现在是非常时髦的蓝色阴影,但上面的文字仍然是黑色的,这不是很好看或时髦。如果是白色的就更好了。我们可以通过更改导航栏的 titleTextAttributes 来更改它。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>


更改标题文本样式

并不是说您 应该这样做 ,但是您也可以更改导航栏中文本的样式。例如,你可以给它一个漂亮的阴影来带回 90 年代后期的感觉。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

设置状态栏样式

状态栏(时间、电池指示器)的默认样式为“深色”。这可以通过使用 UIStatusBarStyle 的有效映射枚举之一来更改。如果您想知道 NativeScript 如何为类映射 iOS 类型和函数,您可以在 ios.d.ts 文件内的 跨平台模块存储库中找到所有这些内容。无需做任何猜测。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

更改后退按钮颜色

如果我们在这个页面上确实有一个后退按钮,它的颜色是错误的:

只需在 navigationBar 上设置色调颜色即可解决此问题。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

将按钮添加到导航栏

可以使用标记将其他按钮添加到导航栏。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

还可以通过构建 UIBarButtonItems 然后将它们添加到 navigationItem 上的 rightBarButtonItems 数组以编程方式添加按钮。


 <Page xmlns="http://www.nativescript.org/tns.xsd" loaded="loaded" >
  <!-- ... -->
</Page>

享受原住民

使用 NativeScript 时我最喜欢的部分之一是这种能力,只需放下并直接开始使用底层原生 API,而无需使用 Objective-C 使用的那种愚蠢的消息传递语法。一旦您掌握了 API 的工作原理以及 NativeScript 如何映射它们 ,您就可以使用 NativeScript 对您的应用程序进行大量自定义。

相关文章