CN110727482B - 一种界面的更新方法和装置 - Google Patents
一种界面的更新方法和装置 Download PDFInfo
- Publication number
- CN110727482B CN110727482B CN201810779822.2A CN201810779822A CN110727482B CN 110727482 B CN110727482 B CN 110727482B CN 201810779822 A CN201810779822 A CN 201810779822A CN 110727482 B CN110727482 B CN 110727482B
- Authority
- CN
- China
- Prior art keywords
- style
- attribute value
- interface
- file
- mapping table
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for 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)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种界面的更新方法和装置,所述界面具有对应的静态样式映射表,所述方法包括:加载样式文件;从所述样式文件中读取待修改样式;从所述静态样式映射表中查找到所述待修改样式的应用钩子函数;根据所述应用钩子函数和所述待修改样式动态更新所述界面。本申请实施例通过样式文件和静态样式映射表,分离了样式修改逻辑和绑定调用逻辑,并且基于静态样式映射表查找对应的应用钩子函数,由于静态样式映射表采用键值对方式存储样式,因此在查找时避免了if…else和多次字符串判断,提高了处理效率。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种界面的更新方法和一种界面的更新装置。
背景技术
目前,应用程序的UI(User Interface,用户界面)的换肤方案需要对皮肤包做分端处理,如针对MacOS、iOS和Android等操作系统上分别提供不一样的样式皮肤包,从而增加了编写和维护的成本。
在MacOS和IOS等操作系统上,传统软件创作没有现成的类似HTML5的CSS样式管理机制,UI逻辑和UI视觉完全耦合,无法实现动态灵活的界面换肤。例如,在代码创作中要将UISwitch组件的ontint颜色设置为红色的代码为:UISwitch switch;[switchsetOnTintColor:[UIColor redColor]],这样存在的问题是,在代码编译发布后,这个switch将永远为红色,但业务场景中有时需要将已发布线上运行的界面颜色替换为黑色。
通常,如果换肤方案要实现某组件的样式解耦,一般会对组件做继承扩展,同时对于需动态化的样式属性名(字符串)采用基于条件判断的方式来穷举,而样式的属性值外部存储于其他可替换的资源文件中(称之为外部样式文件)。
上述的方案存在缺陷,一方面因为采用继承耦合性太强,不能实现一些原生组件的样式解耦,另一方面因为依赖于if...else的语句,代码难以维护,多次的字符串比较和判断效率低下。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种界面的更新方法和相应的一种界面的更新装置。
为了解决上述问题,本申请公开了一种界面的更新方法,所述界面具有对应的静态样式映射表,所述方法包括:
加载样式文件;
从所述样式文件中读取待修改样式;
从所述静态样式映射表中查找到所述待修改样式的应用钩子函数;
根据所述应用钩子函数和所述待修改样式动态更新所述界面。
优选地,在所述加载样式文件之前,还包括:
针对界面设置对应的静态样式映射表;
在所述静态样式映射表中绑定样式的属性名和应用钩子函数。
优选地,在所述加载样式文件之前,还包括:
设置样式文件,所述样式文件包括样式的属性名和属性值;
将所述样式文件保存于外部服务器或者本地客户端。
优选地,所述待修改样式包括目标属性名,所述从所述静态样式映射表中查找到所述待修改样式的应用钩子函数,包括:
根据所述目标属性名在所述静态样式映射表查找到匹配的属性名;
获取所述属性名对应的应用钩子函数。
优选地,在所述加载样式文件之后,还包括:
对所述样式文件中样式的属性值进行类型转换得到转换属性值;
将所述属性值和对应的转换属性值保存于缓存中。
优选地,所述待修改样式还包括目标属性值,所述根据所述应用钩子函数和所述待修改样式动态更新所述界面,包括:
在所述缓存中查找与所述目标属性值匹配的属性值;
若在所述缓存中存在与所述目标属性值匹配的属性值,则获取所述属性值对应的转换属性值;
将所述转换属性值传递给所述应用钩子函数以动态更新所述界面。
优选地,还包括:
若在所述缓存中不存在与所述目标属性值匹配的属性值,则对所述目标属性值进行类型转换得到转换属性值。
优选地,所述加载样式文件,包括:
当接收到所述样式文件的修改通知时,加载所述样式文件。
本申请实施例还公开了一种界面的更新装置,所述界面具有对应的静态样式映射表,所述装置包括:
样式文件加载模块,用于加载样式文件;
待修改样式读取模块,用于从所述样式文件中读取待修改样式;
应用钩子函数查找模块,用于从所述静态样式映射表中查找到所述待修改样式的应用钩子函数;
界面更新模块,用于根据所述应用钩子函数和所述待修改样式动态更新所述界面。
优选地,还包括:
映射表设置模块,用于针对界面设置对应的静态样式映射表;
数据绑定模块,用于在所述静态样式映射表中绑定样式的属性名和应用钩子函数。
优选地,还包括:
样式文件设置模块,用于设置样式文件,所述样式文件包括样式的属性名和属性值;
样式文件保存模块,用于将所述样式文件保存于外部服务器或者本地客户端。
优选地,所述待修改样式包括目标属性名,所述应用钩子函数查找模块包括:
匹配子模块,用于根据所述目标属性名在所述静态样式映射表查找到匹配的属性名;
获取子模块,用于获取所述属性名对应的应用钩子函数。
优选地,还包括:
类型转换模块,用于对所述样式文件中样式的属性值进行类型转换得到转换属性值;
保存模块,用于将所述属性值和对应的转换属性值保存于缓存中。
优选地,所述待修改样式还包括目标属性值,所述界面更新模块包括:
属性值查找子模块,用于在所述缓存中查找与所述目标属性值匹配的属性值;
转换属性值获取子模块,用于若在所述缓存中存在与所述目标属性值匹配的属性值,则获取所述属性值对应的转换属性值;
界面动态更新子模块,用于将所述转换属性值传递给所述应用钩子函数以动态更新所述界面。
优选地,还包括:
类型转换子模块,用于若在所述缓存中不存在与所述目标属性值匹配的属性值,则对所述目标属性值进行类型转换得到转换属性值。
优选地,所述样式文件加载模块包括:
样式文件加载子模块,用于当接收到所述样式文件的修改通知时,加载所述样式文件。
本申请实施例包括以下优点:
本申请实施例中在需要对于界面进行更新时,加载样式文件,并根据样式文件中的待修改样式从静态样式映射表中查找到匹配的应用钩子函数,从而能够在程序运行时动态对于界面进行更新。本申请实施例通过样式文件和静态样式映射表,分离了样式修改逻辑和绑定调用逻辑,并且基于静态样式映射表查找对应的应用钩子函数,由于静态样式映射表采用键值对方式存储样式,因此在查找时避免了if...else和多次字符串判断,提高了处理效率。
附图说明
图1是本申请的一种界面的更新方法实施例的步骤流程图;
图2是本申请的一种缓存中样式属性值的处理示意图;
图3是本申请的一种StyleKit与其他模块的关系示意图;
图4是本申请的一种第三方数据库接入StyleKit的示意图;
图5是本申请的一种界面更新的整体应用示意图;
图6是本申请的一种界面的更新装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种界面的更新方法实施例的步骤流程图,所述界面具有对应的静态样式映射表,具体可以包括如下步骤:
步骤101,加载样式文件。
在具体实现中,样式文件是可用于修改界面的样式的资源文件,从而实现界面的更新。界面更新可以是指界面皮肤的更新,也即是采用手段更新界面视觉。样式是指与应用程序界面的颜色,字体等视觉相关的元素代码逻辑,侧重于应用程序内在的功能或者界面交互实现。
其中,样式文件可以是JSON格式文件或者PLIST格式文件,作为样式文件以键值对的形式存储样式的属性名和对应的属性值。
在具体实现中,UI类是对应着人机交互的一个应用程序的界面,包含了UI绘制和其相关的数据结构。样式就是这些数据结构之一。UI在绘制的时候会从样式文件中取得UI的属性值(样式值)并应用与绘制。
在本申请实施例中,当需要对于应用程序的界面,比如界面的颜色或者字体等进行修改时,StyleKit加载该界面的样式文件以对于界面进行修改。
其中,StyleKit是一个组件库,类似于CSS(级联样式表),能将UI逻辑实现和其样式分离的一个框架。通过StyleKit,程序员可以更专注于界面的逻辑开发,而对于UI的样式可以使用外部样式文件来进行表达,实现与UI逻辑的解耦。同时,因为StyleKit的可配置、易扩展,可以将第三方数据库轻松接入StyleKit并利用其样式解耦和组件化能力并保证高性能。
在本申请的一种优选实施例中,在所述加载样式文件,即步骤101之前还可以包括如下步骤:
设置样式文件,所述样式文件包括样式的属性名和属性值;
将所述样式文件保存于外部服务器或者本地客户端。
在本申请实施例中可以设置样式文件,样式文件中存储了样式的属性名和对应的属性值,此外,将样式文件存储在本地客户端或者客户端可以访问的外部服务器上,那么在需要修改界面的时候可以从本地客户端或者外部服务器获取并加载样式文件。
在本申请的一种优选实施例中,在所述加载样式文件,即步骤101之前还可以包括如下步骤:
针对界面设置对应的静态样式映射表;
在所述静态样式映射表中绑定样式的属性名和应用钩子函数。
在本申请实施例中,针对某个界面(UI类)的category下定义样式的静态样式映射表,绑定样式的属性名和对应的应用钩子函数。应用钩子函数可以用于样式的逻辑实现。
基于ObjectiveC的category和宏指令的方式,StyleKit扩展方式极为灵活,可支持针对现有UIKit的所有组件进行样式解耦能力扩展。
其中,宏指令是c语言提供的编译时代码写入技术,运行时Objective C提供的在代码执行过程中动态解析指令并调用的方式。宏指令能在编译时针对某个组件生成自己的静态样式属性表,使扩展方式标准化,而易于代码维护。
在本申请的一种优选实施例中,所述步骤101可以包括如下子步骤:
当接收到所述样式文件的修改通知时,加载所述样式文件。
在实际应用中,可实时监控样式文件,一旦样式文件修改就会收到通知,此时将可以到本地客户端或者外部服务器中获取并加载该样式文件,用于对界面进行动态更新。
步骤102,从所述样式文件中读取待修改样式。
在具体实现中,StyleKit在加载样式文件后,读出需要修改的样式,具体地,待修改样式以包括目标属性名及其对应的目标属性值。
步骤103,从所述静态样式映射表中查找到所述待修改样式的应用钩子函数。
在本申请实施例中,在读取待修改样式,将根据待修改样式从静态样式映射表中,查找到待修改样式对应的应用钩子函数,从而能够通过调用应用钩子函数对于界面进行更新。
在本申请的一种优选实施例中,所述待修改样式包括目标属性名,所述步骤103可以包括如下子模块:
根据所述目标属性名在所述静态样式映射表查找到匹配的属性名;
获取所述属性名对应的应用钩子函数。
在本申请实施例中,静态样式映射表用于存储样式属性名和对应的应用钩子函数,而样式文件则以类似表的形式存储了样式属性名和对应的属性值,这两张表依赖于“样式属性名”做匹配和关联,样式属性名是ID,保持唯一。
在读取到待修改样式的目标属性名后,就可以基于目标属性名在静态样式映射表查找唯一匹配的属性名,然后获取静态样式映射表中匹属性名对应的应用钩子函数。
由于静态样式映射表是静态内存存储的字典表,通过样式属性名的比较,避免了if...else的多条件多次字符串比较和判断,时间复杂度达到常数级别。
步骤104,根据所述应用钩子函数和所述待修改样式动态更新所述界面。
在本申请实施例中,StyleKit在加载样式文件后读取需要修改的样式属性名及其属性值后,会根据读到的样式的属性名在静态样式映射表中匹配查找对应样式的应用钩子函数,随后在程序运行时动态的去调用应用钩子函数和待修改样式中的相关参数来实现界面样式的动态替换。
本申请实施例基于样式文件和静态样式映射表,分离了样式修改逻辑和绑定调用逻辑。基于这个原理,也很容易实现一份样式包可以应用到多种类型的终端(比如iOS和Android),无需分别定制。
在本申请的一种优选实施例中,在所述加载样式文件,即步骤101之后,还可以包括如下子步骤:
对所述样式文件中样式的属性值进行类型转换得到转换属性值;
将所述属性值和对应的转换属性值保存于缓存中。
优选地,在本申请实施例中对于已经反序列化后样式的属性值缓存,避免后续还要重新将表征样式的字符串反序列化而提升性能。随着需要替换的样式越多,优化效果越好。
具体来说,本申请实施例会对于待修改样式的属性值类型转换后保存于CastCache缓存中重复利用,以避免后续重复的类型转换。
比如CastCache缓存中存储了属性值0xFFFFF这个字符串表示颜色,但iOS中实际的颜色是UIColor类型,这就需要从字符串转换为UIColor对象。这个过程是比较耗时的,但同时样式文件中可能有许多属性值都是0xFFFFF这个字符串,那可以考虑通过缓存的方式存储这个字符串对应的UIColor对象,从而避免多次类型转换。
在本申请的一种优选实施例中,所述待修改样式还包括目标属性值,所述步骤104还可以包括如下子步骤:
在所述缓存中查找与所述目标属性值匹配的属性值;
若在所述缓存中存在与所述目标属性值匹配的属性值,则获取所述属性值对应的转换属性值;
将所述转换属性值传递给所述应用钩子函数以动态更新所述界面。
StyleKit在加载样式文件后,StyleKit根据内部的静态样式映射表常量级的速度查找到对应样式的应用钩子函数,接着采用样式的目标属性值在CastCache缓存查找是否存在匹配的属性值,如果存在,则获取CastCache缓存该属性值对应的转换属性值,由于转换属性值已经预先转换为所需的类型,因此无需进行二次转换,直接可以将该转换属性值和对象作为参数传递给应用钩子函数,从而能够基于应用钩子函数在程序运行时对于界面动态更新。
在本申请的一种优选实施例中,所述步骤104还可以包括如下子步骤:
若在所述缓存中不存在与所述目标属性值匹配的属性值,则对所述目标属性值进行类型转换得到转换属性值。
在本申请实施例中,如果在CastCache缓存命中后,就直接读取CastCache缓存中已经转换好该属性值对应的样式对象,反正,如果在CastCache缓存不命中,则将样式文件中读取到的以字符串方式存储的属性值进行类型转换从而得到对应的对象。
应用本申请实施例具有如下优点,1、通过编译时的组件维度的静态样式映射表和运行时调用机制分离了样式修改逻辑和绑定调用逻辑,结合宏指令,实现功能的灵活扩展性和代码的易维护性;在扩展能力对依赖的三方库或二方库的样式解耦扩展都是非侵入的。2、静态样式映射表和属性值反序列化的缓存优化保证了样式应用的高性能、3、基于一套元语义(JSON格式表达)来表征内部的样式格式,实现跨端的换肤方案。对于多种终端来说(比如iOS和Android),只需要一份样式包,无需分别定制;同时对于样式的外部表征,可以支持任意格式的定制,比如CSS、XML等等。
下面采用具体的例子对于本申请实施例进行说明,参照图2,本申请实施例包括:应用程序发起界面渲染指令(Render样式),将要从界面的样式文件中读取待修改样式的属性值来绘制界面。此时会通过程序运行时调用(Runtime Dispatch对象)去根据静态样式映射表(Property Mapping)去查找到样式的应用钩子函数,找到应用钩子函数后,通过StyleManager读取该样式的属性值并作为参数传给应用钩子函数。
StyleManager最初从样式文件读取的样式的属性值(样式值)都是字符串类型,但传递给应用钩子函数需要是对象类型,这个时候需要类型转换。但许多样式的属性值其实是相同的,如果要多次类型转换很耗时。所以在本申请实施例中设置了CastCache缓存用于暂时保存这些类型转换的结果以避免多次转换。
假设StyleManager需要取UI的backgroundColor属性值,其值是0xFFFFF,第一次读取时不可避免要将这个属性值从字符串转成UIColor对象。第二次,StyleManager需要读取fontColor属性值,其值恰好也是0xFFFFF,这个时候它可以之间以字符串“0xFFFFF”作为索引去CastCache缓存中查找对应的UIColor对象,如果查到就是缓存命中,否则不命中。命中后就直接将UIColor对象返回,避免二次转换。
参照图3,UIKit和第三方数据库(3rd Party Library)通过StyleKit API接入到StyleKit,其中,StyleKit API的包括有几个模块,其中,样式宏映射是StyleKit基于宏封装的一套语法,可以用于在模块级别组织静态样式映射表,这种方式是静态编译时的,一旦模块编译后就无法修改。样式动态注入是运行时的,它可以动态的修改对象内部的样式映射表,不会受到模块是否编译影响。Swizzle是Objective C的语言机制,用于在运行时替换或者修改对象的方法和属性。
参照图4,所示的函数映射表为样式映射表,函数映射表可以通过宏映射静态组织,也可以通过样式动态注入动态组织。在实际的样式查找过程中,由于样式映射表是键值对的方式表达,故而其查询的时间复杂度为常量级,也就是O(1)。
参照图5,本申请实施例可以用于实现多种业务接入方的界面更新操作,比如搜索引擎、购物平台等等,业务接入方可以基于StyleKit组件实现对于样式文件的访问,其中,样式文件可以通过云端样式协议访问云端配置数据库获取,也可以通过本地样式访问协议从本地客户端获取。
其中,本申请实施例的StyleKit组件可以包括如下部分:
Macro Mapping:样式宏映射,样式宏映射是StyleKit基于宏封装的一套语法,可以用于在模块级别组织样式映射表,这中方式是静态编译时的,一旦模块编译后就无法修改。
Property Inject:样式动态注入。样式动态注入是运行时的,它可以动态的修改对象内部的样式映射表,不收模块是否编译影响。
Style Swizzle:基于Objective C的Swizzle语言机制,用于在运行时替换或者修改对象的样式方法或样式属性。
Render:渲染模块,负责渲染更新界面UI。
Runtime Dispatch:用于根据静态样式映射表去查询样式的应用钩子函数并调用执行这个函数。
Propery Map:静态样式映射表,存储样式的属性名和其对应样式的应用钩子函数。
CastCache:用于缓存类型转换后样式属性值。
StyleManager:用于加载样式文件并进行管理。
StyleFile Monitor:用于监控外部样式文件,一旦样式文件修改就会通知StyleManager重新加载
Utilities:一些工具类。
本申请实施例基于上述内容,在需要对于界面进行更新时,加载样式文件,并根据样式文件中的待修改样式从静态样式映射表中查找到匹配的应用钩子函数,从而能够在程序运行时动态对于界面进行更新。本申请实施例通过样式文件和静态样式映射表,分离了样式修改逻辑和绑定调用逻辑,并且基于静态样式映射表查找对应的应用钩子函数,由于静态样式映射表采用键值对方式存储样式,因此在查找时避免了if...else和多次字符串判断,提高了处理效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图6,示出了本申请的一种界面的更新装置实施例的结构框图,所述界面具有对应的静态样式映射表,所述装置具体可以包括如下模块:
样式文件加载模块201,用于加载样式文件;
待修改样式读取模块202,用于从所述样式文件中读取待修改样式;
应用钩子函数查找模块203,用于从所述静态样式映射表中查找到所述待修改样式的应用钩子函数;
界面更新模块204,用于根据所述应用钩子函数和所述待修改样式动态更新所述界面。
在本申请的一种优选实施例中,所述装置还可以包括如下模块:
映射表设置模块,用于针对界面设置对应的静态样式映射表;
数据绑定模块,用于在所述静态样式映射表中绑定样式的属性名和应用钩子函数。
在本申请的一种优选实施例中,所述装置还可以包括如下模块:
样式文件设置模块,用于设置样式文件,所述样式文件包括样式的属性名和属性值;
样式文件保存模块,用于将所述样式文件保存于外部服务器或者本地客户端。
在本申请的一种优选实施例中,所述待修改样式包括目标属性名,所述应用钩子函数查找模块203可以包括如下子模块:
匹配子模块,用于根据所述目标属性名在所述静态样式映射表查找到匹配的属性名;
获取子模块,用于获取所述属性名对应的应用钩子函数。
在本申请的一种优选实施例中,所述装置还可以包括如下模块:
类型转换模块,用于对所述样式文件中样式的属性值进行类型转换得到转换属性值;
保存模块,用于将所述属性值和对应的转换属性值保存于缓存中。
在本申请的一种优选实施例中,所述待修改样式还包括目标属性值,所述界面更新模块204可以包括如下子模块:
属性值查找子模块,用于在所述缓存中查找与所述目标属性值匹配的属性值;
转换属性值获取子模块,用于若在所述缓存中存在与所述目标属性值匹配的属性值,则获取所述属性值对应的转换属性值;
界面动态更新子模块,用于将所述转换属性值传递给所述应用钩子函数以动态更新所述界面。
在本申请的一种优选实施例中,所述装置还可以包括如下模块:
类型转换子模块,用于若在所述缓存中不存在与所述目标属性值匹配的属性值,则对所述目标属性值进行类型转换得到转换属性值。
在本申请的一种优选实施例中,所述界面更新模块201可以包括如下子模块:
样式文件加载子模块,用于当接收到所述样式文件的修改通知时,加载所述样式文件。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本申请实施例所述的方法。
本申请实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行本申请实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种界面的更新方法和一种界面的更新装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种界面的更新方法,其特征在于,所述界面具有对应的静态样式映射表,所述方法包括:
加载样式文件;
从所述样式文件中读取待修改样式;
从所述静态样式映射表中查找到所述待修改样式的应用钩子函数;
根据所述应用钩子函数和所述待修改样式动态更新所述界面;
其中,所述样式文件包括样式的属性值,所述属性值和所述属性值对应的转换属性值保存于缓存中,所述待修改样式包括目标属性值,所述根据所述应用钩子函数和所述待修改样式动态更新所述界面,包括:
在所述缓存中查找与所述目标属性值匹配的属性值;
若在所述缓存中存在与所述目标属性值匹配的属性值,则获取所述属性值对应的转换属性值;
将所述转换属性值传递给所述应用钩子函数以动态更新所述界面。
2.根据权利要求1所述的方法,其特征在于,在所述加载样式文件之前,还包括:
针对界面设置对应的静态样式映射表;
在所述静态样式映射表中绑定样式的属性名和应用钩子函数。
3.根据权利要求1所述的方法,其特征在于,在所述加载样式文件之前,还包括:
设置样式文件,所述样式文件包括样式的属性名;
将所述样式文件保存于外部服务器或者本地客户端。
4.根据权利要求2或3所述的方法,其特征在于,所述待修改样式包括目标属性名,所述从所述静态样式映射表中查找到所述待修改样式的应用钩子函数,包括:
根据所述目标属性名在所述静态样式映射表查找到匹配的属性名;
获取所述属性名对应的应用钩子函数。
5.根据权利要求1所述的方法,其特征在于,在所述加载样式文件之后,还包括:
对所述样式文件中样式的属性值进行类型转换得到转换属性值;
将所述属性值和对应的转换属性值保存于缓存中。
6.根据权利要求1所述的方法,其特征在于,还包括:
若在所述缓存中不存在与所述目标属性值匹配的属性值,则对所述目标属性值进行类型转换得到转换属性值。
7.根据权利要求1所述的方法,其特征在于,所述加载样式文件,包括:
当接收到所述样式文件的修改通知时,加载所述样式文件。
8.一种界面的更新装置,其特征在于,所述界面具有对应的静态样式映射表,所述装置包括:
样式文件加载模块,用于加载样式文件;
待修改样式读取模块,用于从所述样式文件中读取待修改样式;
应用钩子函数查找模块,用于从所述静态样式映射表中查找到所述待修改样式的应用钩子函数;
界面更新模块,用于根据所述应用钩子函数和所述待修改样式动态更新所述界面;
其中,所述样式文件包括样式的属性值,所述属性值和所述属性值对应的转换属性值保存于缓存中,所述待修改样式包括目标属性值,所述界面更新模块,包括:
属性值查找子模块,用于在所述缓存中查找与所述目标属性值匹配的属性值;
转换属性值获取子模块,用于若在所述缓存中存在与所述目标属性值匹配的属性值,则获取所述属性值对应的转换属性值;
界面动态更新子模块,用于将所述转换属性值传递给所述应用钩子函数以动态更新所述界面。
9.根据权利要求8所述的装置,其特征在于,还包括:
映射表设置模块,用于针对界面设置对应的静态样式映射表;
数据绑定模块,用于在所述静态样式映射表中绑定样式的属性名和应用钩子函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810779822.2A CN110727482B (zh) | 2018-07-16 | 2018-07-16 | 一种界面的更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810779822.2A CN110727482B (zh) | 2018-07-16 | 2018-07-16 | 一种界面的更新方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110727482A CN110727482A (zh) | 2020-01-24 |
CN110727482B true CN110727482B (zh) | 2023-05-12 |
Family
ID=69217378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810779822.2A Active CN110727482B (zh) | 2018-07-16 | 2018-07-16 | 一种界面的更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727482B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767071A (zh) * | 2020-07-02 | 2020-10-13 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种数据的显示调整方法、装置及电子设备 |
CN112559109A (zh) * | 2020-12-28 | 2021-03-26 | 携程旅游网络技术(上海)有限公司 | 基于组件库的显示界面的生成方法及系统、设备及介质 |
CN112860295A (zh) * | 2021-03-12 | 2021-05-28 | 北京首汽智行科技有限公司 | 一种ui元素动态更新方法 |
CN113868565B (zh) * | 2021-09-23 | 2024-05-24 | 深圳市腾讯网域计算机网络有限公司 | 皮肤样式的文件编辑方法及装置 |
CN114296816B (zh) * | 2021-12-16 | 2024-05-31 | 珠海豹趣科技有限公司 | 一种稳定运行的Windows系统主题的更改方法及装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010015332A (ja) * | 2008-07-02 | 2010-01-21 | Sony Corp | クロスドメインで情報を伝達可能な情報処理システム |
US7954110B1 (en) * | 2004-06-22 | 2011-05-31 | Apple Inc. | Observing properties associated with an object in an object-oriented programming platform |
CN102646038A (zh) * | 2012-02-28 | 2012-08-22 | 广州市动景计算机科技有限公司 | 控件内容展现方法、控件内容展现装置以及移动终端 |
CN102929617A (zh) * | 2012-10-18 | 2013-02-13 | 广东威创视讯科技股份有限公司 | 一种Web软件UI界面的换肤方法 |
CN103473086A (zh) * | 2013-08-29 | 2013-12-25 | 上海斐讯数据通信技术有限公司 | 一种宽带猫web界面切换方法 |
CN104267968A (zh) * | 2014-10-16 | 2015-01-07 | 福建星网视易信息系统有限公司 | 界面切换的方法和装置 |
CN105159677A (zh) * | 2015-09-09 | 2015-12-16 | 深圳Tcl数字技术有限公司 | 终端用户界面的受控显示方法及装置 |
US9519629B1 (en) * | 2012-08-06 | 2016-12-13 | Amazon Technologies, Inc. | Style consolidation and optimization with strong ownership |
CN106233250A (zh) * | 2014-03-11 | 2016-12-14 | 瑞典爱立信有限公司 | 用于定制应用的动态运行时间生成的方法和系统 |
CN106484823A (zh) * | 2016-09-28 | 2017-03-08 | 山东浪潮商用系统有限公司 | 一种css文件的修改方法、装置及计算机可读介质 |
CN107451169A (zh) * | 2017-03-07 | 2017-12-08 | 河海大学常州校区 | 一种体育竞赛信息发布系统通用平台 |
CN108089852A (zh) * | 2017-12-15 | 2018-05-29 | 网易(杭州)网络有限公司 | 建立属性访问的方法、介质、装置和计算设备 |
CN108228300A (zh) * | 2018-01-02 | 2018-06-29 | 武汉斗鱼网络科技有限公司 | 一种控制内容实时刷新的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9141402B2 (en) * | 2005-04-25 | 2015-09-22 | Aol Inc. | Providing a user interface |
US9041736B2 (en) * | 2012-06-05 | 2015-05-26 | Apple Inc. | Method, system and apparatus for rendering a map according to a stylesheet |
-
2018
- 2018-07-16 CN CN201810779822.2A patent/CN110727482B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7954110B1 (en) * | 2004-06-22 | 2011-05-31 | Apple Inc. | Observing properties associated with an object in an object-oriented programming platform |
JP2010015332A (ja) * | 2008-07-02 | 2010-01-21 | Sony Corp | クロスドメインで情報を伝達可能な情報処理システム |
CN102646038A (zh) * | 2012-02-28 | 2012-08-22 | 广州市动景计算机科技有限公司 | 控件内容展现方法、控件内容展现装置以及移动终端 |
US9519629B1 (en) * | 2012-08-06 | 2016-12-13 | Amazon Technologies, Inc. | Style consolidation and optimization with strong ownership |
CN102929617A (zh) * | 2012-10-18 | 2013-02-13 | 广东威创视讯科技股份有限公司 | 一种Web软件UI界面的换肤方法 |
CN103473086A (zh) * | 2013-08-29 | 2013-12-25 | 上海斐讯数据通信技术有限公司 | 一种宽带猫web界面切换方法 |
CN106233250A (zh) * | 2014-03-11 | 2016-12-14 | 瑞典爱立信有限公司 | 用于定制应用的动态运行时间生成的方法和系统 |
CN104267968A (zh) * | 2014-10-16 | 2015-01-07 | 福建星网视易信息系统有限公司 | 界面切换的方法和装置 |
CN105159677A (zh) * | 2015-09-09 | 2015-12-16 | 深圳Tcl数字技术有限公司 | 终端用户界面的受控显示方法及装置 |
CN106484823A (zh) * | 2016-09-28 | 2017-03-08 | 山东浪潮商用系统有限公司 | 一种css文件的修改方法、装置及计算机可读介质 |
CN107451169A (zh) * | 2017-03-07 | 2017-12-08 | 河海大学常州校区 | 一种体育竞赛信息发布系统通用平台 |
CN108089852A (zh) * | 2017-12-15 | 2018-05-29 | 网易(杭州)网络有限公司 | 建立属性访问的方法、介质、装置和计算设备 |
CN108228300A (zh) * | 2018-01-02 | 2018-06-29 | 武汉斗鱼网络科技有限公司 | 一种控制内容实时刷新的方法及装置 |
Non-Patent Citations (9)
Title |
---|
[iOS开发]TextKit之动态改变样式;pibread;《https://blog.csdn.net/qbins/article/details/12773147》;20131016;全文 * |
iOS NSClassFromString(字符串)自动抓换成类名;liyubao160;《https://blog.csdn.net/u011146511/article/details/78222009》;20171013;全文 * |
iOS -使用属性列表序列化简单对象-指定序列化与反序列化的编码格式;db:作者;《https://2cto.com/kf/201310/253615.html》;20131029;全文 * |
iOS重要知识-- KVC、KVO、runloop、runtime;Auditore;《https://www.jianshu.com/p/c37eb4468784》;20161101;全文 * |
iOS页面动态化,怎么样用JSON数据的原生页面摆脱低效的H5页面,来动态更新app页面样式;Kobe_Dai;《https://www.jianshu.com/p/9e22a732c9c8》;20170427;全文 * |
PaintCode 用户操作指南(样式表和代码生成);郑几块;《https://www.woshipm.com/ucd/173386.html》;20150711;全文 * |
StyleKit:可配置 UI Style 工具库;SwiftLanguage;《https://juejin.cn/post/6844903441567842318》;20160816;全文 * |
如何添加BEGIN_PROP_MAP和END_PROP_MAP之间的内容呢?有编译错误;staek23;《https://bbs.csdn.net/topics/390609222》;20131008;全文 * |
样式表中的 element.style样式如何修改;chenguang79;《https://blog.csdn.net/chenguang79/article/details/46721971》;20150702;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110727482A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110727482B (zh) | 一种界面的更新方法和装置 | |
US8997070B2 (en) | Extension mechanism for scripting language compiler | |
CN109388766B (zh) | 页面加载的方法和装置 | |
US20190129734A1 (en) | Data collection workflow extension | |
WO2018072626A1 (zh) | 组件调用的方法和装置、组件数据处理的方法和装置 | |
CN114096956A (zh) | 一种数据库操作层表示方法及装置 | |
US8244780B1 (en) | Parameter oriented automated database command | |
TW202001548A (zh) | 應用程式的開發方法和裝置 | |
US10437564B1 (en) | Object mapping and conversion system | |
US11288062B2 (en) | Automatic source code refactoring | |
CN108170430B (zh) | 一种界面展示的方法及系统 | |
US11328021B2 (en) | Automatic resource management for build systems | |
US11537367B1 (en) | Source code conversion from application program interface to policy document | |
CN111488155A (zh) | 着色语言翻译方法 | |
CN111142849B (zh) | 流程处理方法、装置、存储介质及处理器 | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
US11762760B1 (en) | Scalable test workflow service | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
US8266589B2 (en) | Optimizing the handling of source code requests between a software configuration management (SCM) system and a software integrated development environment (IDE) using projected ancillary data | |
CN112604273B (zh) | 数据驱动的游戏系统功能加载方法、设备及存储介质 | |
CN107025105B (zh) | 代码生成方法及装置 | |
US10929121B2 (en) | Method, device and related system for dynamically repairing application | |
CN106293862B (zh) | 一种可扩展标记语言xml数据的解析方法和装置 | |
CN112541001A (zh) | 数据查询方法、装置、存储介质及设备 | |
CN113934748A (zh) | 混合型sql脚本文件生成方法、执行方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |