iOS 端自定义开发(一)| 学习笔记

简介: 快速学习 iOS 端自定义开发。

开发者学堂课程【mPaaS 小程序开发实战 - 教你如何独立运行小程序 :iOS 端自定义开发(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/741/detail/13133


iOS 端自定义开发(一)

 

内容介绍:

一、 iOS 小程序自定义导航栏

二、 iOS 小程序自定义启动加载页

三、 iOS 小程序自定义双向通道

 

一、iOS 小程序自定义导航栏

自10.1.60 版本基线起,iOS 小程序支持对导航栏进行自定义,您可以对导航栏中的标题、背景、返回按钮、右侧的设置和关闭按钮进行自定义。本文将向您详细介绍关于自定义 iOS 小程序导航栏的方法。

导航栏指的是小程序页面中上侧的部分。

根据导航栏上的元素,将自定义导航栏分为三个部分:自定义导航栏背景和标题,自定义导航栏返问按钮,导航栏右侧设置和关闭按钮。

1、自定义导航栏背景和标题

(1)全局自定义导航栏背景和标题

小程序里会有很多页面,全局自定义是指每次设置之后,不管是标题还是背景,对所有的页面都是生效的。

如果您要全局自定义小程序所有页面默认导航栏背景和标题,则需要在 app.json 中修改 window 配置。app.json 中 window配置如下:

"window" : {

"enablewK": "YES",

"enableDSL": true,

"defaultTitle":"小程序",

"backgroundColor": "#F5F5F9",

"pullRefresh": false,

"allowsBouncevertical":"YES",

"titleBarColor" :"#fff"

}

导航栏隐藏:您需要自定义 JSAPI 实现。

导航栏透明:“transparentTitle": "always”。

导航栏渐变:“transparentTitle": "auto"。

导航栏颜色:“titleBarColor": ""#f00”。

导航栏标题文案: "defaultTitle": "Alert"。

导航栏标题颜色:在H5基类的  viewWillAppear 方法的 super之后中,修改当前页面 titleView 的样式。

导航栏标题图片:"titlelmage": "https://plic.alipayobjects. Com/e/201212/1ntOVeWwtg.png"。标题不是纯文字,而是一张图片。

"titleBarColor"当前导航栏页面的背景色,小程序全部的背景

"defaultTitle"默认的标题;"backgroundColor"背景颜色;"pullRefresh"是否支持刷新;“transparentTitle"当前导航栏页面是否透明;修改标题颜色,需要在原生代码中通过修改代码来实现。    

修改标题颜色,首先在小程序页面基类的 viewWillAppear 方法的 super之后中,修改当前页面 titleView 的样式。

在之前课程基础上,自定义当前页面的基类,创建一个 webviewcontrol,它继承 H5webviewController,同时他的.m 文件里面,在 viewWillAppear 之后,

自定义一个方法 customNavigationBarWithParams,在这个里面来修改当前页面标题的颜色,标题的颜色通过传递一个启动参数,启动参数的设置在小程序里设置 titleColor,设置为#0f0,绿色,保存一下。

回到参数之后,取到参数的值,得到当前页面的 view,修改当前页面标题所在的 label,修改 label 的颜色、字体等。基类设置完成之后,还需要在定制 H5 容器的时候,指定基类是刚刚创建的 MPH5Webviewcontroller,加上这个代码,不加的话,自定义的配置是不生效的。

重新运行一下工程。同时,点击一下讲过的预览,看修改过的代码在手机上的效果,手机端的投屏,点击调试小程序,扫描二维码,点击到下一个页面,就可以看到标题变成绿色,也就是变成了刚刚设置的颜色,

导航栏标题位置:请参考以下代码进行实现。

1. - (NSDictionary *)nebulaCustomConfig

2.{

3. return @{@"h5_tinyAppTitleViewAlignLeftConfig“ : @"{\"enable\":\NO\}”};

4.}

现在的标题处在靠左的位置,在左侧的返回按钮上,有的用户可能希望标题居中显示,这就需要使用上述的代码,将代码放到 DTFrameworklnterface+TinyAppDemo.m 中,同样还需要进行开关的配置,这个方法其实是代理的协议,我们要实现代理协议的方法,同时指定协议所在的 Delegate,作为开关的内容,设置完成之后,就修改了标题的位置,重新运行一下工程。

在全局自定义导航栏背景和标题的基础之上,还可以修改某一页面的导航栏,修改某一页面的导航栏主要是在当前页面 -json_中配置。

(2)自定义某一页面导航栏背景和标题

如果您要自定义小程序中某一页面的导航栏背景和标题,则需要在该页面的 -json_中配置。

导航栏隐藏:您需要自定义JSAPI实现。

导航栏透明:“transparentTitle”: "always”".。

导航栏渐变:“transparentTitle": "auto”。

导航栏颜色:“titleBarColor": "#f00”。

导航栏标题文案:“defaultTitle":"Alert”。

导航栏标题颜色:您需要自定义 JSAPI,在 JSAPI中修改当前页面 titleView 的样式。

导航栏标题图片:"titlelmage":"https://pic.alipayobjects. Com/e/201212/1ntOVeWwtg.png"

同样可以对导航栏进行隐藏、透明、修改颜色,标题颜色等等,举一个当前页面 tiny-to-native.json 的 json 配置,这是一个自定义 json 页面,选择自定义 API,当前页面的标题是小程序,背景是白色,修改他的 title,改成自定义API,选择标题颜色,红色,点击保存,刷新看一下效果,变成了红色,标题也变成了自定义 API。

刚才是在两个 json 配置里面,一个是当前页面所在的 json 配置文件,一个是 app.json 文件里。

都设置了“titleBarColor"和“defaultTitle",同时设置,当前页面的优先级是要高的,也就是说以当前页面设置的“titleBarColor"和“defaultTitle"两个参数为准。所以说他的背景就是红色,字体是白色。

image.png

同样可以设置导航栏进行透明、渐变。透明是指页面的导航栏彻底透明的,渐变是刚进页面背景是透明的,向上滚动页面导航栏是不透明的。

还有一种情况是页面打开了之后,需要动态的修改,比如用户点击某个按钮时候,要修改导航栏背景的颜色,小程序默认使用 my.setNavigationBar 的 API 来供它使用。

动态修改当前页面的导航栏背景和标题

如果您要动态修改当前页面的导航栏霄景和标题,则需要调用 my.setNavigationBar 进行配置。

导航栏隐藏:您需要自定义 JSAPI 实现。

导航栏透明:不支持。

导航栏渐变:不支持。

导航栏颜色:backgroundColor : "efo0” 。

导航栏标题文案:“title”:"新标题"。

导航栏标题颜色:您需要自定义 JSAPI,在 JSAPI 中修改当前页面 titleView 的样式。

可以修改当前页面的背景颜色,标题的文案,导航栏标题颜色,导航栏标题图片等等,导航栏隐藏、透明、渐变等API 是不支持的,如果要实现这些功能,需要在基类里通过传参,或者自定义 JSAPI 的实现。

(3)自定义导航栏返回按钮

如果您要全局修改返回按钮样式,则需要在 H5 基类的

viewWillAppear 方法的 super 之后中,修改当前页面 leftBarButtonltem 样式。可修改的样式包含以下内容,您可以参考下方代码段以获得更多指导。

修改返回箭头和文案颜色

修改返回箭头样式和文字内容

隐藏返回箭头

隐藏返回文案

在基类里修改当前返回按钮的颜色,同样可以在当前某个页面上设置 backbuttoncolor 来确定当前页面颜色,这个参数是自定义的,设置成什么都可以,跟代码能对应上就可以。“#0f0”改成绿色,修改颜色,左侧按钮的颜色和返回按钮的颜色。设置完成之后,重新运行工程,重新生成二维码,并扫描,点进一个页面,默认是蓝色,变成了白色。

4)导航栏右侧设置和关闭按钮

全局修改右侧按钮图片和颜色

如果您要修改右侧按钮图片和颜色,则需要引入头文件 #import <TinyappService/TASUtils.h>并进行如下配置。

修改关闭按钮颜色:[TASUtils sharedinstance].

customltemColor = [UlColor redColor]。

修改关闭按钮图片:[TASUtils sharedinstance].

customCloselmage=[Ullmage imageNamed:@"x]。

显示分享按钮:[TASUtils sharedInstance].

shoulShowSettingMenu = YES。

修改分享按钮图片:[TASUtils sharedInstance].

customSettinglImage = [Ullmage imageNamed:@"xx"]。

修改分享按钮颜色:[TASUtils sharedInstance].

customltemColor = [UIColor redColor]。

全局修改右侧按钮图片和颜色,在基础之上设置这些API就可以了。头文件#import <TinyappService/TASUtils.h>最好是放在 DTFrameworklnterface 快要启动的时候,导入这个头文件之后,设置后面这些部分。

修改关闭按钮颜色,或者图片整体样式都替换掉,在关闭按钮左侧增加一个分享按钮,分享按钮默认是隐藏的,如果需要可以把它显示出来,[TASUtils sharedInstance]. shoulShow SettingMenu = YES,有了分享按钮之后,还能修改分享按钮的样式,默认它是连接点,还可以修改他的颜色。设置全部打开之后,重新运行工程,

(5)全局修改右侧按钮样设

如果您要全局修改右侧按钮样式,则需要在 H5 基类的

viewwillAppear 中,重写当前页面的 rightBarButtonltem。

完全修改右侧按钮,可能右侧按钮不想是一张图片,把它变成文字,可以完全重写右侧的按钮。

1.- (void)viewWillAppear:(BOOL)animated

2.{

3.[super viewWillAppear:animated];

4....

5.BOOL isTinyApp = [NBUtils isTinyAppWithSession:self. psdSession];

6.if (isTinyApp){

7.self.navigationltem.rightBarButtonltem=[[UIBar Buttonltem alloc] initWithTitle:@"关闭"

style:UlBarButtonltem

8.}

9.}

10.

11.- (void)onClickClose

12.{

13.[TASUtils exitTinyApplication:self.appld];

14.}

在基类里面重写当前验证的 rightBarButtonltem,重新定义他的点击事件还有样式,点击调试小程序,扫描二维码,可以看到右侧多出一个分享按钮,显示了分享按钮之后,我们要让关闭按钮和分享按钮进行修改,比如点击加号的时候,就已经退出了小程序,如果想完全自定义按钮的话,还能在 H5 基类里面完全重写当前页面的rightBarButtonltem,点击的事件可以调用 TASUtils exitTinyApplication:self.appld,同样可以来退出当前的小程序,这样整个右侧的按钮变成了关闭的文案,可以重新运行一下工程,查看效果。

打开可以看到右侧的图标变成了文案,当点击关闭按钮的时候,就回到自定义的点击事件里面去。这个自定义事件也是关闭小程序,同样也关闭了小程序。

相关文章
|
4天前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
19 1
|
10天前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
|
12天前
|
搜索推荐 IDE API
打造个性化天气应用:iOS开发之旅
【9月更文挑战第35天】在这篇文章中,我们将一起踏上iOS开发的旅程,通过创建一个个性化的天气应用来探索Swift编程语言的魅力和iOS平台的强大功能。无论你是编程新手还是希望扩展你的技能集,这个项目都将为你提供实战经验,帮助你理解从构思到实现一个应用的全过程。让我们开始吧,构建你自己的天气应用,探索更多可能!
34 1
|
4天前
|
移动开发 前端开发 Swift
iOS 最好的应用程序开发编程语言竟然是这7种
iOS 最好的应用程序开发编程语言竟然是这7种
32 8
|
3天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
7天前
|
安全 Swift iOS开发
探索iOS开发中的Swift语言之美
在数字时代的浪潮中,移动应用已成为日常生活的延伸。本文将深入探讨iOS平台上的Swift编程语言,揭示其背后的设计哲学、语法特性以及如何利用Swift进行高效开发。我们将通过实际代码示例,展示Swift语言的强大功能和优雅简洁的编程风格,引导读者理解并运用Swift解决实际问题。
|
17天前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
50 7
|
传感器 存储 定位技术
|
20天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
28天前
|
开发框架 数据可视化 Java
iOS开发-SwiftUI简介
iOS开发-SwiftUI简介