CN110347384B - 基于Object_C语言分类实现多样式弹窗的方法 - Google Patents
基于Object_C语言分类实现多样式弹窗的方法 Download PDFInfo
- Publication number
- CN110347384B CN110347384B CN201910643759.4A CN201910643759A CN110347384B CN 110347384 B CN110347384 B CN 110347384B CN 201910643759 A CN201910643759 A CN 201910643759A CN 110347384 B CN110347384 B CN 110347384B
- Authority
- CN
- China
- Prior art keywords
- popup
- popup window
- display
- block
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种基于Object_C语言分类实现多样式弹窗的方法,包括步骤:1)配置弹框展示信息,弹窗展示请求携带待展示弹窗的XML信息,接收到所述XML信息后会在Xcode中新建一份空白的.xib文件,对所述XML信息进行解析,会得到Object_C语言代码;2)条件传递新弹框,利用block块实现点击事件传递,同时实现旧弹框的移除,利用分类方式书写调用接口:3)展示弹窗。本发明在弹框样式上,实现了由程序员自主定义,可以适用任何样式的企业APP弹框样式。
Description
技术领域
本发明涉及计算机终端技术领域,主要涉及基于Object_C语言分类实现多样式弹窗的方法。
背景技术
现有技术当前提供的应用于iOS***开发的消息展示框样式上:主要包含标题、内容、左边按钮、右边按钮,样式都是固定的,而且内容单一,单一的内容是无法满足企业APP开发时丰富多样的弹框要求的。调用上:需要先在控制器中新建该弹框对象,添加左右按钮,填入相关消息文本,这样在使用过程中会显得复杂,而且对于整个项目的代码量会增加。
发明内容
本发明所要解决的技术问题是提供一种弹窗展示内容多样化,可自主定义、适用范围广,弹窗设计效率高的基于Object_C语言分类实现多样式弹窗的方法。
本发明所要解决的技术问题可以采用如下技术方案来实现:
一种基于Object_C语言分类实现多样式弹窗的方法,包括如下步骤:
1)配置弹框展示信息
接收服务器发送的弹窗展示请求,在服务器上预置所述弹窗的大小、弹窗主体显示位置以及弹窗内容显示位置,得到预设弹窗框架模板;
所述弹窗展示请求携带待展示弹窗的XML信息,接收到所述XML信息后会在Xcode中新建一份空白的.xib文件,该文件是用于存放XML信息的子控件;
对所述XML信息进行解析,得到所述待展示弹窗的显示元素、各个显示元素的显示描述信息以及Object_C语言代码,在可视化界面中配置好需要展示信息;
所述Object_C语言代码包括.xib文件的颜色、大小、约束、位置、适配的手机屏幕尺寸、使用的编码信息,还包括所述待展示弹窗的显示元素以及各个显示元素的显示描述信息;
所述XML信息通过所述Object_C语言代码配置好解析出来的控件,构建出的所述控件添加用户事件:①声明无返回值,有参数的block对象;②为构建的控件添加两个block对象的属性,一个为确定事件处理服务,一个为取消事件处理服务;③分别将声明的block对象赋值到步骤②中添加到控件上的两个属性;
2)条件传递新弹框
利用block块实现点击事件传递,同时实现旧弹框的移除,利用分类方式书写调用接口:
①新建一个控制器类分类;
②在分类的.h文件中暴露调用接口;
③在分类的.m文件中去实现接口,并传入相关参数;
点击事件的传递是以block作为函数的参数传递,在用户点击了弹窗中的确定或取消按钮后,***会逐级查找isa指针,最后找到需要处理事件的block块,也就是最终呈现在控制器层的block,并运行block块中的代码,从而实现点击事件的传递;
旧弹框的移除是在iOS开发中,UIKit框架的UIView类中提供了将子视图从父视图移除自身的方法:removeFromSuperview,当用户点击了确定或取消按钮后,弹框对象调用上述方法[self removeFromSuperview],实现弹窗移除;
3)展示弹窗
根据预设弹窗框架模板和所述待展示弹窗的显示元素以及各个显示元素的显示描述信息,对弹窗进行展示。
本发明的有益效果是:一种基于Object_C语言分类实现多样式弹窗的方法,在弹框样式上,实现了由程序员自主定义,可以适用任何样式的企业APP弹框样式;在方法调用上,利用了分类的特性,只需要一句代码便可唤起弹框,并且可以实现在任何控制器中唤起,大大提高了开发效率,节省了开发时间。
附图说明
图1是本发明一种基于Object_C语言分类实现多样式弹窗的方法的流程图。
图2是本发明步骤2)条件传递新弹框中block块的原理结构图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
参见图1,一种基于Object_C语言分类实现多样式弹窗的方法,包括如下步骤:
1)配置弹框展示信息
接收服务器发送的弹窗展示请求,根据业务需求在服务器上定义好在APP中需要展示的弹窗的大小、弹窗主体显示位置以及弹窗内容显示位置,得到预设弹窗框架模板;弹窗展示请求携带待展示弹窗的XML信息,APP端在做相关业务需求的时候,弹窗的xml信息伴随业务处理成功与失败一并返回;APP端接收到XML信息后会在Xcode中新建一份空白的.xib文件,该.xib文件相当于一个用于XML信息携带的子控件容器,调度解析器算法解析XML信息,在算法出口将解析到的数据进行封装缓存。
在缓存处理线程中读取缓存的数据,根据不用控件的不同id,调用***Init方法构建相关控件对象(UIView/UIButton/UIImageView/UILabel等),根据缓存数据给构建的控件赋值大小,颜色,位置,文字,触摸事件等属性,会得到Object_C语言代码;该Object_C代码包括.xib文件的颜色、大小、约束、位置、适配的手机屏幕尺寸、使用的编码信息,同时包括待展示弹窗的显示元素以及各个显示元素的显示描述信息。在.xib的代码文件中,加入<objects></objects>标签,服务器返回的XML信息中会包含需要添加在.xib文件中的多个子控件,例如:UILabel控件,UIImageView控件,UIButton控件,不同的子控件中,携带的信息可由服务器自定义。例如:UIImageView,可携带image的contentModel,唯一标识id,x坐标,y坐标,宽度,高度;UIButton,可携带背景颜色,button被选中时背景图片和样式,button没被选中时的背景图片和样式,button的x,y坐标,button的大小,button显示的文字标题等等。
对XML信息进行解析,得到待展示弹窗的显示元素以及各个显示控件的显示描述信息,利用Object_C代码配置好解析出来的控件,并且把各个控件的描述信息加到控件上,即为构建出的控件添加用户事件:①声明无返回值,有参数的block对象;②为构建的控件添加两个block对象的属性,一个为确定事件处理服务,一个为取消事件处理服务;③分别将声明的block对象赋值到步骤②中添加到控件上的两个属性。
以下代码是用Object_C代码对解析出来的XML信息进行弹窗的配置:
2)条件传递新弹框
当检测到对弹窗中链接信息的触发操作时,解析链接信息,得到跳转对象地址;根据跳转对象地址,在客户端中打开跳转对象地址对应的界面。链接信息包括频道标识、应用标识、应用标识对应的表项标识、用户标识、群用户标识以及携带客户端接口信息的网页链接中的任一种;跳转对象地址指示客户端提供频道界面、应用界面、应用界面中的任一个表项、用户会话界面、群会话界面或网页中的任一种界面。
利用block块实现点击事件传递,同时实现旧弹框的移除,利用分类方式书写调用接口。
2.1)点击事件的传递
block定义:block本质上也是一个Object_C对象或者说是一个结构体,内部也有一个isa指针;block是封装了函数调用(函数指针)以及函数调用环境(捕获到的参数)的Object_C对象。
参见图2,block原理结构图,从图中很容易看到isa指针,所以Object_C处理Block是按照对象来处理的。本文以block作为函数的参数传递,在用户点击了弹窗中的确定或取消按钮后,***会逐级查找isa指针,最后找到需要处理事件的block块,也就是最终呈现在控制器层的block,并运行block块中的代码,从而实现点击事件的传递。
2.2)旧弹窗移除
在iOS开发中,每一个UIButton类型控件都没被监听到用户点击事件,由于UIButton是被添加到弹窗上的,调用点击事件函数能获取到当前的弹窗;UIKit框架的UIView类中提供了将子视图从父视图移除自身的方法:removeFromSuperview,当用户点击了确定或取消按钮后,弹框对象调用上述弹窗方法[self removeFromSuperview],实现弹窗移除,且可以在内存中进行销毁。
2.3)分类定义
Category是Objective-C 2.0之后添加的语言特性,分类、类别其实都是指的Category,Category的主要作用是为已经存在的类添加方法;Objective-C 中的 Category就是对装饰模式的一种具体实现,它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。
手机显示的当前界面我们称为一个UIViewController,在UIViewController对象中苹果公司会定义好一些固定的函数给开发者调用,但是在某些特定需求中,苹果公司提供的方法无法满足开发需求,所以一般会用分类的方式来补充满足特定需求的函数。本文以自定义的分类UIViewController+HTTAlertController.h来补充满足开发需求的函数。
举例来说,实现代码如下:
①新建一个控制器类分类,名字以 UIViewController+HTTAlertController.h为例;
②在分类的.h文件中暴露调用接口,该接口主要供外部调用,用于展示弹窗;
③在分类的.m文件中去实现接口,并传入相关参数;以下代码是对展示代码的实现,初始化了需要展示的弹窗对象,并且把相关参数传入到该对象中。
3)展示弹窗
经过步骤1和步骤2,弹窗已经在代码中生成,根据预设弹窗框架模板和待展示弹窗的显示元素以及各个显示元素的显示描述信息,在需要显示弹窗的地方进行快捷调用;利用分类特性,直接用控制器对象调用便可唤起弹窗。
本发明的实现代码如下:
步骤1:获取服务器后台数据
NSURL *url = [NSURL URLWithString:URLString];构建网络请求路径。
NSURLSession *session = [NSURLSession sharedSession];设置请求通道session。
NSURLSessionDataTask *dataTask = [[NSURLSessionDataTask alloc]init];构建网络请求对象。
[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error){}];发送网络请求。
XMLResolver *resolver = [[XMLResolver alloc]init];新建解析器对象。
NSDictionary *data = [resoler resolve:xmlData];//解析xml数据。
Bool flag = [resovler saveData:data];缓存解析数据。
NSDictionary *data = [DataManaget getDataWithDataId:id];根据id获取缓存中的数据。
NSString *imageName = data[@“imageName”];获取图片名称。
NSString *message= data[@“message”];获取提示文字。
Float xLocation= [data[@“xLocation”] floatValue];获取x坐标。
Float yLocation= [data[@“yLocation”] floatValue];获取y坐标。
Float width= [data[@“width”] floatValue];获取宽度。
Float height= [data[@“height”] floatValue];获取高度。
initAlertViewWithFrame:(CGRect)frame message:(NSString *)messageimage:(NSString *)imageName;构建弹窗控件。
步骤2:为构建出的控件添加用户事件
1)typedef void (^LeftAction)(void);
typedef void (^RightAction)(void); 声明无返回值,block对象。
2)@property(nonatomic,strong)LeftAction leftAction;
@property(nonatomic,strong)RightAction rightAction;
为构建的控件添加两个block对象的属性。
3)self.rightAction = rightAction;
self.leftAction = leftAction;
为控件上的两个属性赋值。
步骤3:移除弹窗
- (IBAction)rightBtnClick:(id)sender;确认/取消按钮点击监听。
2)[self removeFromSuperview];调用***方法removeFromSuperview移除控件。
本发明以Object_C为语言基础,应用于iOS开发,通过在服务器后台自定义弹窗的方式,结合了iOS开发特有的block块,采用分类的方式满足企业不同开发需求的弹窗实现方法,在调用上方便,便捷,支持服务器后台自定义,免去更新时重新上架APP的麻烦。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及同等物界定。
Claims (3)
1.一种基于Object_C语言分类实现多样式弹窗的方法,包括如下步骤:
1)配置弹框展示信息
接收服务器发送的弹窗展示请求,在服务器上预置所述弹窗的大小、弹窗主体显示位置以及弹窗内容显示位置,得到预设弹窗框架模板;
所述弹窗展示请求携带待展示弹窗的XML信息,接收到所述XML信息后会在Xcode中新建一份空白的.xib文件,该文件是用于存放XML信息的子控件;
对所述XML信息进行解析,得到所述待展示弹窗的显示元素、各个显示元素的显示描述信息以及Object_C语言代码,在可视化界面中配置好需要展示信息;
2)条件传递新弹框
利用block块实现点击事件传递,同时实现旧弹框的移除,利用分类方式书写调用接口:
①新建一个控制器类分类;
②在分类的.h文件中暴露调用接口;
③在分类的.m文件中去实现接口,并传入相关参数;
3)展示弹窗
根据预设弹窗框架模板和所述待展示弹窗的显示元素以及各个显示元素的显示描述信息,对弹窗进行展示;
所述步骤2)中的点击事件的传递是以block作为函数的参数传递,在用户点击了弹窗中的确定或取消按钮后,***会逐级查找isa指针,最后找到需要处理事件的block块,也就是最终呈现在控制器层的block,并运行block块中的代码,从而实现点击事件的传递;
所述步骤2)中的旧弹框的移除是在iOS开发中,UIKit框架的UIView类中提供了将子视图从父视图移除自身的方法:removeFromSuperview,当用户点击了确定或取消按钮后,弹框对象调用上述方法removeFromSuperview移除控件,实现弹窗移除。
2.如权利要求1所述的一种基于Object_C语言分类实现多样式弹窗的方法,其特征在于,所述Object_C语言代码包括.xib文件的颜色、大小、约束、位置、适配的手机屏幕尺寸、使用的编码信息,还包括所述待展示弹窗的显示元素以及各个显示元素的显示描述信息。
3.如权利要求2所述的一种基于Object_C语言分类实现多样式弹窗的方法,其特征在于,所述步骤1)中的所述XML信息通过所述Object_C语言代码配置好解析出来的控件,构建出的所述控件添加用户事件:①声明无返回值,有参数的block对象;②为构建的控件添加两个block对象的属性,一个为确定事件处理服务,一个为取消事件处理服务;③分别将声明的block对象赋值到步骤②中添加到控件上的两个属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910643759.4A CN110347384B (zh) | 2019-07-17 | 2019-07-17 | 基于Object_C语言分类实现多样式弹窗的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910643759.4A CN110347384B (zh) | 2019-07-17 | 2019-07-17 | 基于Object_C语言分类实现多样式弹窗的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347384A CN110347384A (zh) | 2019-10-18 |
CN110347384B true CN110347384B (zh) | 2023-06-23 |
Family
ID=68175577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910643759.4A Active CN110347384B (zh) | 2019-07-17 | 2019-07-17 | 基于Object_C语言分类实现多样式弹窗的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110347384B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078216B (zh) * | 2019-11-08 | 2023-06-02 | 泰康保险集团股份有限公司 | 信息展示方法、装置、电子设备及计算机可读介质 |
CN111563065B (zh) * | 2020-07-09 | 2020-12-11 | 北京联想协同科技有限公司 | 一种文档保存方法、装置及计算机可读存储介质 |
CN111782220A (zh) * | 2020-08-18 | 2020-10-16 | 网易(杭州)网络有限公司 | 一种文件的检测方法和装置 |
CN112256377A (zh) * | 2020-10-26 | 2021-01-22 | 北京达佳互联信息技术有限公司 | 弹窗数据处理方法和装置 |
CN113867870A (zh) * | 2021-09-29 | 2021-12-31 | 完美世界(北京)软件科技发展有限公司 | 弹窗管理***、弹窗控制方法、存储介质、计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744670A (zh) * | 2013-12-31 | 2014-04-23 | 广州华多网络科技有限公司 | 弹窗展示方法和装置 |
CN109445786A (zh) * | 2018-10-19 | 2019-03-08 | 成都安恒信息技术有限公司 | 一种基于JavaScript实现通用弹窗页面的方法 |
CN110908646A (zh) * | 2019-11-29 | 2020-03-24 | 苏州精易会信息技术有限公司 | 一种积木式回调函数块构建方法、装置、存储介质和处理器 |
CN114003157A (zh) * | 2021-10-30 | 2022-02-01 | 腾讯科技(深圳)有限公司 | 一种数据展示的方法及装置、计算机设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002023336A1 (en) * | 2000-09-14 | 2002-03-21 | Bea Systems, Inc. | Xml-based graphical user interface application development toolkit |
-
2019
- 2019-07-17 CN CN201910643759.4A patent/CN110347384B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744670A (zh) * | 2013-12-31 | 2014-04-23 | 广州华多网络科技有限公司 | 弹窗展示方法和装置 |
CN109445786A (zh) * | 2018-10-19 | 2019-03-08 | 成都安恒信息技术有限公司 | 一种基于JavaScript实现通用弹窗页面的方法 |
CN110908646A (zh) * | 2019-11-29 | 2020-03-24 | 苏州精易会信息技术有限公司 | 一种积木式回调函数块构建方法、装置、存储介质和处理器 |
CN114003157A (zh) * | 2021-10-30 | 2022-02-01 | 腾讯科技(深圳)有限公司 | 一种数据展示的方法及装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
iOS底层解析Runtime实现原理;窦术尧等;《电子技术与软件工程》;20180627(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110347384A (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347384B (zh) | 基于Object_C语言分类实现多样式弹窗的方法 | |
CN107818143B (zh) | 一种页面配置、生成方法及装置 | |
US9419987B2 (en) | Method and device for prompting information about e-mail | |
US20120159310A1 (en) | Method for converting mobile web application into native application and apparatus using the same | |
CN105955888B (zh) | 一种页面调试预览方法及*** | |
US8132119B2 (en) | Priority controlled display | |
CN107391134B (zh) | 一种通用移动应用交互界面自动生成与动态变换方法与装置 | |
CN109725901A (zh) | 前端代码的开发方法、装置、设备和计算机存储介质 | |
CN1543620A (zh) | 承运商和包裹递送桌面工具 | |
CN104219295A (zh) | 基于服务器端配置的移动设备的信息展示方法及*** | |
CN108170409B (zh) | Web前端控件的开发方法和*** | |
US20160012147A1 (en) | Asynchronous Initialization of Document Object Model (DOM) Modules | |
WO2016005884A2 (en) | Javascript-based, client-side template driver system | |
CN110506267A (zh) | 数字组件背景渲染 | |
CN109309612A (zh) | 邮件内容生成方法及装置、存储介质和电子设备 | |
CN111857715B (zh) | 基于h5的联动下拉组件选中方法、装置、设备及存储介质 | |
CN111428159B (zh) | 线上化分类方法和装置 | |
US20110191165A1 (en) | Web-based system | |
CN114756228A (zh) | 页面处理方法、装置、设备及存储介质 | |
CN116823537A (zh) | 一种保险报案处理方法、装置、存储介质及电子设备 | |
CN113342450B (zh) | 页面处理的方法、装置、电子设备及计算机可读介质 | |
CN105681903B (zh) | 一种用户界面呈现的方法及装置 | |
CN115146198A (zh) | 一种基于Electron的简易浏览器实现方法及*** | |
CN100403312C (zh) | 一种实现智能链接的方法 | |
CN115809363A (zh) | 内容推送方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 511434 No.1 and No.2, Shihua Road, Hualong Town, Panyu District, Guangzhou City, Guangdong Province Applicant after: Guangdong haomadame smart home Co.,Ltd. Address before: No.1, No.2 highway, No.2, Panyu, Guangzhou Applicant before: GUANGDONG KELAINI INTELLIGENT TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |