System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于UIKit开发的UI基础容器架构应用方法、设备及介质技术_技高网

基于UIKit开发的UI基础容器架构应用方法、设备及介质技术

技术编号:40081584 阅读:8 留言:0更新日期:2024-01-23 14:48
本发明专利技术公开了基于UIKit开发的UI基础容器架构应用方法、设备及介质,属于UI开发技术领域,本发明专利技术要解决的技术问题为如何避免UITabBarController及UINavigationController的局限性,解除相关UI配置与业务的耦合性,同时避免读取栈顶界面时判断逻辑的冗余,技术方案为:通过一个tab栏容器类XYTabBarController,提供的Api命名和功能参考官方,内部提供的tabBar容器是一个UIView,内部具体实现由业务决定;通过一个单例类XYTabBarManager/XYLaunchManager统一收纳配置,将差异代码集中,同时提高读写层次深问题;通过运行时,给每个界面制定一个导航条,实现UINavigationController与业务的解耦,同时增加导航条navigationBar的多样性;导航条navigationBar通过代理协议实现业务差异性;通过XYNavigationBar屏幕旋转、状态栏及导航栏背景色设计;通过自定义一套转场动画,避免读取栈顶界面时判断逻辑的冗余。

【技术实现步骤摘要】

本专利技术涉及ui开发,具体地说是一种基于uikit开发的ui基础容器架构应用方法、设备及介质。


技术介绍

1、随着互联网的快速发展,涉及人们生活的各类app不断涌现,各类业务的相互交织,系统库提供的样板已无法应对多广繁杂的业务场景,且每次新开发一个app,配置ui架构时,存在大量重复代码,后期业务开发中,使用不灵活,配置代码复杂,极易与业务产生耦合。目前存在如下问题:

2、①系统uitabbarcontroller提供的uitabbar,uitabbaritem代码非开源,布局样式固化,重写或自定义时参考官方文档依据少,扩展性低,读写子项代码层次深。子tab栏切换易耦合多个uinavigationcontroller的出入栈操作,为实现特定业务界面调转,配置代码复杂,降低拓展性等。

3、②系统uinavigationcontroller提供了uinavigationbar,uinavigationi tem,出入栈动画,代码非开源,布局样式固化,重写或自定义时,限定文字图片大小,出入栈时uinavigationbar显示隐藏容易出现黑屏问题,由于不同界面共用同一个导航条(navigationbar),导致不同界面根据业务个性化展示导航条时扩展性极差,不同界面配置导航条的代码极易产生耦合错乱。

4、③没有统一配置uitabbarcontroller的规范,没有统一配置uinavigatio nbar事件的规范。

5、④底部弹出界面不入栈,即:不能用uinavigationcontroller管理。导致:网络、socket消息来时,无法判断获取用户正在操作哪个业务界面。

6、故如何避免uitabbarcontroller及uinavigationcontroller的局限性,解除相关ui配置与业务的耦合性,同时避免读取栈顶界面时判断逻辑的冗余是目前亟待解决的技术问题。


技术实现思路

1、本专利技术的技术任务是提供一种基于uikit开发的ui基础容器架构应用方法、设备及介质,来解决如何避免uitabbarcontroller及uinavigationcontroller的局限性,解除相关ui配置与业务的耦合性,同时避免读取栈顶界面时判断逻辑的冗余的问题。

2、本专利技术的技术任务是按以下方式实现的,一种基于uikit开发的ui基础容器架构应用方法,该方法具体如下:

3、通过一个tab栏容器类xytabbarcontroller替代系统的uitabbarcontrol ler,提供的api命名和功能参考官方,内部提供的tabbar容器是一个uiview,内部具体实现由业务决定;

4、通过一个单例类xytabbarmanager/xylaunchmanager统一收纳配置,将差异代码集中,同时提高读写层次深问题;

5、通过运行时,给每个界面制定一个导航条,实现uinavigationcontroller与业务的解耦,同时增加导航条navigationbar的多样性;

6、导航条navigationbar通过代理协议实现业务差异性;

7、通过xynavigationbar屏幕旋转、状态栏及导航栏背景色设计;

8、通过自定义一套转场动画,解决底部弹出界面不入栈得问题,避免读取栈顶界面时判断逻辑的冗余。

9、作为优选,自定义的转场动画为xynavigationcontroller的push/pop,mo dal/dismiss转场动画,实现push/pop,modal/dismiss的动画效果;具体如下:

10、自定义xynavigationcontroller继承uinavigationcontroller,并遵守转场动画协议uinavigationcontrollerdelegate,实现协议方法,配置push,pop,modal,dismiss动画对象;

11、自定义动画对象xymodaltransitionanimation,xypushtransitionanima tion继承nsobject,并遵守协议uiviewcontrolleranimatedtransitioning,在对应方法里自定义动画效果、动画时长及动画转变方式;

12、自定义的转场动画的原理为:当界面发生调转(push,pop,modal,dismiss)时,调用xynavigationcontroller实现的uinavigationcontrollerdelegate协议方法,对不同动画配置不同的动画对象,从而实现转场动画的效果。

13、作为优选,给每个界面制定一个导航条具体如下:

14、采用系统提供的安全区域,判断导航条头部偏移量,确保新的机型发布后,代码中不需要做任何更改即可适用;

15、状态栏高度统一设置为100(随机取,但一定大于刘海高度),通过配置状态栏左右与屏幕左右分别对齐以及配置状态栏底部与安全区顶部的依赖关系,实现状态栏定位区域,屏幕上实际显示部分的控制;

16、状态栏定位区域固定后,内部定义一个容器项,包裹导航条上用户可视操作导航条子项,只约束容器项高度及左右,顶部约束依赖状态栏底部即可固定导航条区域;

17、定义布局约束对象,采用三方库masonary,简化代码书写,增加代码可读性;

18、其中,导航条子项,优先级设计:freeview>title>left/nearleft/ri ght/nearright;若发现freeview有值,优先展示freeview在屏幕最前方,后续根据子项数组排序依次展示。

19、作为优选,通过xynavigationbar屏幕旋转、状态栏及背景色设计具体如下:

20、屏幕旋转::xynavigationbar的布局采用的是ios8.0提起的autolayout技术;屏幕旋转时,系统会自动旋转,布局相应子项;

21、状态栏及导航栏的背景色设置是通过自定义两个私有容器项分别充当状态栏及导航条的背景,对外(公)提供配置颜色的api方法,内部实现即可。

22、作为优选,通过xylaunchmanager中的模型数据跟实图,具体如下:

23、自定义一个类型xylaunchrootnode,xylaunchrootnode的内部属性为:

24、①创建控制器的闭包;

25、②是否显示控制器的闭包;

26、根据具体业务初始化每个相应的xylaunchrootnode对象,并存放到一个数组中;

27、通过遍历数组中的数据,依次展示xylaunchrootnode里创建控制器闭包的返回值(要展示的视图);

28、在子视图上调用xylaunchmanager的公用方法,shownextcontroller(),1)删减数组元素再次本文档来自技高网...

【技术保护点】

1.一种基于UIKit开发的UI基础容器架构应用方法,其特征在于,该方法具体如下:

2.根据权利要求1所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,自定义的转场动画为XYNavigationController的push/pop,moda l/dismiss转场动画,实现push/pop,modal/dismiss的动画效果;具体如下:

3.根据权利要求1所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,给每个界面制定一个导航条具体如下:

4.根据权利要求1所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,通过XYNavigationBar屏幕旋转、状态栏及背景色设计具体如下:

5.根据权利要求1所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,通过XYLaunchManager中的模型数据跟实图,具体如下:

6.根据权利要求1所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,XYTabBar包括两个容器项,两个容器项分别用于存放tabBarItem子项及用于可视底部刘海区;

7.根据权利要求1所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,入栈操作及出栈操作具体如下:

8.根据权利要求1-7中任一项所述的基于UIKit开发的UI基础容器架构应用方法,其特征在于,该方法是将创建号的对象存放到一个数组中,从而切换根视图的设计方案,将每个要显现的视图,先依次包装为XYLaunchRootNode的对象,再通过XYLaunchRootNode包装。

9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1至8中任一项所述的基于UIKit开发的UI基础容器架构应用方法。

...

【技术特征摘要】

1.一种基于uikit开发的ui基础容器架构应用方法,其特征在于,该方法具体如下:

2.根据权利要求1所述的基于uikit开发的ui基础容器架构应用方法,其特征在于,自定义的转场动画为xynavigationcontroller的push/pop,moda l/dismiss转场动画,实现push/pop,modal/dismiss的动画效果;具体如下:

3.根据权利要求1所述的基于uikit开发的ui基础容器架构应用方法,其特征在于,给每个界面制定一个导航条具体如下:

4.根据权利要求1所述的基于uikit开发的ui基础容器架构应用方法,其特征在于,通过xynavigationbar屏幕旋转、状态栏及背景色设计具体如下:

5.根据权利要求1所述的基于uikit开发的ui基础容器架构应用方法,其特征在于,通过xylaunchmanager中的模型数据跟实图,具体如下:

6.根据权利要求1所...

【专利技术属性】
技术研发人员:张波孙彪马仕信郭震
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1