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

简介: 快速学习iOS 端自定义开发(二)

开发者学堂课程【mPaaS 小程序开发实战 iOS 端自定义开发(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/301/detail/3515


iOS 端自定义开发(二)


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

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

如果您要修改右侧按钮图片和颜色,则需要引入头文件

#import >并进行如下配置。

·修改关闭按钮颜色:

[TASUtils sharedlnstance].customltemColor[UIColor redColor]

·修改关闭按钮图片:

[TASUtils sharedlnstance].customCloselmage [Ullmage imageNamed:@"xx"].

·显示分享按钮

[TASUtils sharedInstance]shoulShowSettingMenu YES.

·修改分享按钮图片:

[TASUtils sharedInstance].customSettinglmage [Ullmage imageNamed:@"xx"].

·修改分享按钮颜色:

[TASUtils sharedlnstance].customltemColor[UIColor redColor].

2、全局修改右侧按钮样式

如果您要全局修改右侧按钮样式,则需要在 H5 基类的 viewwillAppear中,重写 rightBarButtonltem.

代码:

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

2.{

3.[super viewWillAppear:animated];

4....

5.BOOL isTinyApp-[NBUtils

isTinyAppWithSession:self.psdSession];

6.if (isTinyApp){

8.}

9. }


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

当启动小程序时如小程序未下载到设备,小程序容器会启动加载页提示用户等待,待小程序安装到设备上,加载页关闭井跳转至小程序

(一)实现自定义加载页

对于 iOS 小程序,mPaaS 支持开发者自定义加载页内容,您可按照以下步骤进行配置:

继承 APBaseLoadingVievt 的子类,自定义加载页 View 子类您可以在子类中修改页面 view 的样式

1. //

2. //APBaseLoadingview.h

3. //APMobileFranework

4.

5. created by 21angbao.l1b on 2017/8/2.

6.  Copyright 2017 Alipay.All rights reserved.

7.  //

8.

9. #import <UIKat/UIKt.h>

void(ADFLoadEnoPageAninaconpleteBlock)a Ths biock declaraton is not a prot

sprotocol  APBaseLoadingviewDelegate;

intertace APBaseLoadingview UIview

cproperty  (nonatomic.  strong)  UTImageview  eiconImageview;

property  (nonatomic,strongl  UILabel

etitleLabel;

eproperty (nonatomic,strong)UIPageControl epagecontrol;

eproperty (nonatomic,assign) BOOL

isFarststop:oastoploading.

-property (nonatomic,assion)BOOL

isLoading:

cproperty (nonatomic,weak) idCAPBaseLoadingviewDelegake>delegate;

1.@interface MPBaseLoadingView APBaseLoadingView

2.

3.Cend

4.

5.@implementation MPBaseLoadingview

29. CGSize size =self.bounds.size:

30 CGRectframeCGRectMake((size.width-80)/2,08

31、self.iconlmageView.frame:frame:

32、

33、frame=CGRECTMAKE(15,RECTGEtMAxY(self.iconlmageView.frame)+6,sizew30

34   self.titleLabel.frame=frame:

35

36、frame:CGRECTMAKE((size.width-40)/2CGRECTGTMAXY(self.titleabel.fame+21402

37   self.pageControl.frame=frame:

38、

39、

40 eend

 

三、iOS 小程序自定义双向通道与 iOS 小程序 API 权限扩展配置

调用分为两种方式,第一个就是小程序调用自定义的 api 进行小程序 re native 的通信,主要也分为两部第一个是自定 jsp可以参考这一篇自定义js的文档进行说明。

G scp 主要是它的使用场景,如果要从页面发起L调用,比如想调用 native 的相机或者短信的功能,需要让小程序与内进行一个通信。这里通过自定 G cpi,也提供了两种方式,第一个是bin的注册第二是代码注册,建议是直接使用bin的注册比较好 对J jsp 进行管理。结合代码,自定义的J S apiG S有一个命名的的规范,命名成xxx jsp 的开头其中xxx表示对自定义的前缀,最好是个性化的定制避免与容器默认的 api 进行冲突,第二它必须是继承自 psd J S ai handle 的。

必须继承它最后是在它的点M文件中,需要实现这个 handle 方法,这个方法呢有三个参数,data 是小程序页面调用这个 J C 的时候传入的一些参数信息。第二个 cont 其实就是当前这个小程序页面的一个上文,后有一个 cb 参数,是调用这个 api 完成之后的一个回调,可以离子点的方式把回调的结果传递到小程序上面去。这就是自定义js的代码。

第二步注册 api。也就是需要在一个文件中注册 app。这个拼词文件就是可以直接下载文档上的模板文件,添加到工程中。只要打开这个 pix 的文件,在 J S 数组下面添加一个 item,这个 item 有两个属性。第一个 jsp I 表示的是在小程序中调用这个 jsp 的一个接口名。就是这个 api 的名称,然后第二个类就是刚刚创建的这个 J S H 实现内的类名

最后一步,需要在初始化容器材质的时候指定自定义的文件的路径在初始化 beforeD 的方法里面初始化容器的时候,也就不再是这么简单的操作,而且传入参数,这个自定义 P 的文件所在的一个路径。这个就是它传入到参数里面去,这样就完成了piss的文件的注册了,配置完成之后,就完成了 J S C 的自定义的一个 jsp I。制定好建设配置,下一步在小程序里面就可以调用这个 app 了。

具体的话,可以看在这个 js 里面这个是对应的自定义于 api 的一个页面。有一个点击按钮,点击按钮的话就会触发这个T的方法。调用这个自定义的 J S 这里的 ty 就是在就注册这个届决赛的时候传入了,看一下它的效果,就是在手机上,因为这个 a P F 是定义的,N 的,所以一定要跑在真机上,才能看到效果。

调试的小程序然后扫描二维码切换到这个自定音乐。接碎片的这个页面。这个就是自定义 jsp 的 api 来用于小程序调用原生的的一个方法,总结下来就是首先自定义,一个 J acp I,然后在小程序里面来调用这个 api 进行一个通信。

除了这个之外,后面还提供了一个,从原生应用下场小程序发送自定义事件的一个方式,可以在N面发送一个事件,然后在小程序里面监听这个事件之后,可以拿到从N主动出发来的一些参数,或者一些信息。

首先第一步是要在小程序里面注册监听事件。这里是在小程序 S via J J S 里面在小程序启动的时候,监听这个事件。下一步需要在客户端来 N 来发送这个事件,需要在小程序当前所在的页面里面调一个 C 的方法,这个方法里面有几个参数第一个参数,就是名称,这个名称就是由 ide 里面,名称是要保持一致的。第二个是小程序发送的一些参数信息,这个事件携带的一些参数信息,最后是一个cb的回调。拷贝这个方法之后。

演示就简单一点,点击这个关闭按钮的时候。在这个H五页面,点击这个关闭按钮的时候不再是退出这个 app而是让它发送出一个时间来再重新的运行一下工程。

点击调试这个小程序扫描二维码点击关闭。知道后面这个时候会触发这个事件,触发设计的时候可以看到手机端里面的小程序页面就会收到出发的这个事件。其中的 data 就是刚刚传递的参数就实现了向小程序发送消息的过程。

如果已有小程序 API 或事件无法满足开发需求,您也可以自行扩展。

(一)小程序调用原生自定义 API

1.客户端自定义 APL 并注册。

参考自定义 JSAPI.注册您的自定义 APl

2.小程序调用。

代码:

1.My.callCTINYTONAtive

2.PARAM1:Plaaa

3.param2:p2bbb

4.1.(RESULT) =* (

5.console.log(result):

6.my.showToast(f

7.type:one

8.content:result.message

9.duration:3000

10. ]};

11.]}

()原生应用向小程序发送自定义事件

1.小程序注册事件

代码:          

1.MY.ON(NATIVETOTINY.(RES) = (

2.my.showToast(8

3. type:one

4. CONTENT: JSON.STRINGIFy(RES)

5. duration: 3000

6. SUCCESS: 0 => 0

7.

8.1

9.fall: 0=0

10.

11.3

12. COMPLETE: 0=0

13.

14.1

(1)自定义 JSAPI

要从页面发起 Native 功能调用,例如显示一个 ActionSheet,或显示联系人对话框,您需要扩展一个 JavaScriptAP

(JSAPI)。使用 JSAPL.可以让您在 H5 页面增加 Native 功能调用入口。通过实现自定义 JSAPI 类中的 handler 方法,以 Native 的形式实现特定功能。

H 5容器组件提供以下能力:

·丰富的内置JSAP.实现例如页面 push、pop、标题设置等功能。更多信息,请参见内置 JSAPl。

·支持用户自定义 JSAPI 和插件功能,扩展业务需求。

·本文将结合H5容器和离线包 Demo,自定义一个在 H5页面加载时,修改页面导航栏的插件。

(2)关于此任务:

自定义一个JSAPI可以有以下两种方式

1 ist 注册

2代码注册

操作步骤

ist 注册

1>.创建 JSAPI 类

命名规范:为与容器默认提供的插件命名保持一致,创建的 JSAPI 类命名以 XXJsApi4 开头,其中XX为自定义的前级      

2>基类:所有 JSAPI 均继承自 PSDJSAPiHandlere      

3>实现基础方法:

在.m 文件中,需重写方法(void)handler:context:callback:当在前端调用此 JSAPI时,会转发到此方

相关文章
|
1月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
11天前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
98 66
|
22天前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
|
26天前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
28天前
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。
|
1月前
|
安全 IDE Swift
探索iOS开发之旅:从初学者到专家
在这篇文章中,我们将一起踏上iOS开发的旅程,从基础概念的理解到深入掌握核心技术。无论你是编程新手还是希望提升技能的开发者,这里都有你需要的指南和启示。我们将通过实际案例和代码示例,展示如何构建一个功能齐全的iOS应用。准备好了吗?让我们一起开始吧!
|
1月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
33 2
|
物联网 Android开发 iOS开发
iOS开发 - 蓝牙学习的总结
iOS开发 - 蓝牙学习的总结
191 0
|
iOS开发
IOS开发---菜鸟学习之路--(九)-利用PullingRefreshTableView实现下拉刷新
本章主要讲解如何利用PullingRefreshTableView实现下拉(上拉)刷新的操作  PullingRefreshTableView 实现上下拉刷新的例子百度有很多,大家可以自己搜索下,先看下那些例子(一般搜索过来的都是一样的大家反正先把那部分内容先了解一下,然后再看本文档比较好。
892 0
|
iOS开发 Android开发 存储
IOS开发---菜鸟学习之路--(十)-实现新闻详细信息浏览页面
前面已经将了上下拉刷新 实现了上下拉刷新后我们的第一级界面就做好,接下来我们就需要实现 新闻详细信息浏览了 我个人认为一般实现新闻详细页面的方法有两种(主要是数据源的不同导致了方法的不同) 第一种是本身新闻就是一个链接地址,同时是已经处理好的适应手机浏览的网页 对于这种类型的数据源,我们直接在页面中放一个WebView控件,然后将URL传递过去就好了 另一种则是普通的包含标题、时间、内容、图片等数据结构的新闻内容(我们要实现的也是这种新闻,因为实现了这种之后, 我们就可以实现任何自定义的详细信息的页面了。
890 0