更新时间:2024-07-17 05:45:14下载pdf
涂鸦主题色配置业务包用于配置涂鸦 智能生活 App SDK 中 UI 相关的各种颜色,以及使用这些颜色开发自己的页面,从而使 UI 业务包提供的界面和您自己搭建的界面达到颜色效果的一致性。
在工程的 Podfile
文件中添加主题色业务包组件,并执行 pod update
命令:
source 'https://github.com/tuya/tuya-pod-specs.git'
source 'https://cdn.cocoapods.org/'
platform :ios, '11.0'
target 'your_target_name' do
# 添加主题色业务包
pod 'ThingSmartThemeManagerBizBundle'
end
主题色配置支持配置智能生活 App SDK 中 UI 相关的各种颜色,以及提供对应的颜色给开发者搭建直接的界面。
目前支持深浅两套主题色,并支持用户主动切换主题色或者跟随系统主题色。支持自定义的有主题色、背景色、警告背景颜色、成功背景颜色、引导背景颜色、导航栏背景色、Tab 选中颜色以及弹窗蒙层的透明度。可以使用以下两种方式中的任何一种进行配置:
确保项目根目录存在 thing_custom_config.json
文件,如果不存在,则需要添加。具体请参考 框架接入。
添加颜色配置项。
colors
:浅色模式配置blackColors
:深色模式配置{
"config": {
...
},
"colors":{
"themeColor": "#FF5A28",
"backgroundColor": "#F8F8F8",
"warningColor": "#FF4444",
"tipsColor": "#00CC99",
"guideColor": "#1989FA",
"navigationBarColor": "#FFFFFF",
"tabBarSelectedColor": "#FF5A28",
"alertMaskAlpha": 0.4
},
"blackColors": {
"themeColor": "#FF5A28",
"backgroundColor": "#000000",
"warningColor": "#FF4444",
"tipsColor": "#2DDA86",
"guideColor": "#1989FA",
"navigationBarColor": "#1A1A1A",
"tabBarSelectedColor": "#FF5A28",
"alertMaskAlpha": 0.7
}
}
其中深浅主题色都支持:
themeColor
:主题色backgroundColor
:背景色warningColor
:警告颜色tipsColor
:提示颜色guideColor
:引导颜色navigationBarColor
:导航栏背景色tabBarSelectedColor
:Tab 栏选中颜色alertMaskAlpha
:弹窗蒙层的透明度如果您选择通过 API 进行配置,那么确保在 application:didFinishLaunchingWithOptions:
返回 true
之前,并且在创建 UI 之前完成以下调用。不要在 App 运行过程中进行配置,也不要重复进行配置。
//Light style
configNormalModuleWithThemeColor:backgroundColor:warningColor:tipsColor:guideColor:navigationBarColor:tabBarSelectedColor:alertMaskAlpha:
//Dark style
configDarkModuleWithThemeColor:backgroundColor:warningColor:tipsColor:guideColor:navigationBarColor:tabBarSelectedColor:alertMaskAlpha:
Objective-C 示例
#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingModuleServices.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
id<ThingThemeManagerProtocol> impl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingThemeManagerProtocol)];
//Light style
[impl configNormalModuleWithThemeColor:[UIColor thing_colorWithHexString:@"FF5A28"]
backgroundColor:[UIColor thing_colorWithHexString:@"F8F8F8"]
warningColor:[UIColor thing_colorWithHexString:@"FF4444"]
tipsColor:[UIColor thing_colorWithHexString:@"00CC99"]
guideColor:[UIColor thing_colorWithHexString:@"1989FA"]
navigationBarColor:[UIColor thing_colorWithHexString:@"FFFFFF"]
tabBarSelectedColor:[UIColor thing_colorWithHexString:@"00FFFF"]
alertMaskAlpha:@(0.4)];
//Dark style
[impl configDarkModuleWithThemeColor:[UIColor thing_colorWithHexString:@"FF5A28"]
backgroundColor:[UIColor thing_colorWithHexString:@"000000"]
warningColor:[UIColor thing_colorWithHexString:@"FF4444"]
tipsColor:[UIColor thing_colorWithHexString:@"2DDA86"]
guideColor:[UIColor thing_colorWithHexString:@"1989FA"]
navigationBarColor:[UIColor thing_colorWithHexString:@"1A1A1A"]
tabBarSelectedColor:[UIColor thing_colorWithHexString:@"FF5A28"]
alertMaskAlpha:@(0.7)];
//do something else
...
}
Swift 示例
import ThingModuleServices
import ThingSmartBizCore
import ThingUIKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let impl: ThingThemeManagerProtocol? = ThingSmartBizCore.sharedInstance().service(of: ThingThemeManagerProtocol.self) as? ThingThemeManagerProtocol
//Light style
impl?.configNormalModule(withThemeColor: UIColor.thing_color(withHexString: "FF5A28"),
backgroundColor: UIColor.thing_color(withHexString: "F8F8F8"),
warningColor: UIColor.thing_color(withHexString: "FF4444"),
tipsColor: UIColor.thing_color(withHexString: "00CC99"),
guideColor: UIColor.thing_color(withHexString: "1989FA"),
navigationBarColor: UIColor.thing_color(withHexString: "FFFFFF"),
tabBarSelectedColor: UIColor.thing_color(withHexString: "00FFFF"),
alertMaskAlpha: 0.4)
//Dark style
if #available(iOS 13.0, *) {
impl?.configDarkModule(withThemeColor: UIColor.thing_color(withHexString: "FF5A28"),
backgroundColor: UIColor.thing_color(withHexString: "000000"),
warningColor: UIColor.thing_color(withHexString: "FF4444"),
tipsColor: UIColor.thing_color(withHexString: "2DDA86"),
guideColor: UIColor.thing_color(withHexString: "1989FA"),
navigationBarColor: UIColor.thing_color(withHexString: "1A1A1A"),
tabBarSelectedColor: UIColor.thing_color(withHexString: "FF5A28"),
alertMaskAlpha: 0.7)
}
//do something else
...
}
App 默认使用浅色主题,可以通过以下接口切换主题样式。
let impl: ThingThemeManagerProtocol? = ThingSmartBizCore.sharedInstance().service(of: ThingThemeManagerProtocol.self) as? ThingThemeManagerProtocol
if #available(iOS 13.0, *) {
impl?.changeThemeStyle(UIUserInterfaceStyle.dark)
}
参考系统定义,设置主题方案有以下枚举:
unspecified
:跟随系统,即和系统主题色保持一致light
:使用浅色主题dark
:使用深色主题let impl: ThingThemeManagerProtocol? = ThingSmartBizCore.sharedInstance().service(of: ThingThemeManagerProtocol.self) as? ThingThemeManagerProtocol
if #available(iOS 13.0, *) {
impl?.currentThemeStyle()
}
当主题样式设置为跟随系统时,可以通过以下方法查询当前主题色是否是深色模式。
let impl: ThingThemeManagerProtocol? = ThingSmartBizCore.sharedInstance().service(of: ThingThemeManagerProtocol.self) as? ThingThemeManagerProtocol
//当前主题色是否深色模式
impl?.isDarkMode();
可以注册以下主题模式变化通知,来监听模式切换事件。
extern NSString * const cThingThemeChangedNotification;
另外,为 view
添加了主题变化扩展,当 layer
在主题切换时需要重绘场景时非常有用。
view.thingTheme_registerChangeAction({
//Render your interface with themeColor
}, withKey: "myKey")
当开发 UI 页面时,通过以下方法可以获取当前主题颜色。
Objective-C 示例
#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingModuleServices.h>
id<ThingThemeManagerProtocol> impl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingThemeManagerProtocol)];
UIColor *themeColor = impl.themeColor;
//render your interface with themeColor
...
Swift 示例
let impl: ThingThemeManagerProtocol? = ThingSmartBizCore.sharedInstance().service(of: ThingThemeManagerProtocol.self) as? ThingThemeManagerProtocol
let themeColor = impl?.themeColor
//render your interface with themeColor
...
根据颜色的色调、饱和度和亮度 HSB(Hue Saturation Brightness)值,可以判断属于深色还是浅色。
名词 | 说明 |
---|---|
深色 | 表示 0 ≤ S ≤ 40% 并且 60% ≤ B ≤ 100% 的颜色 |
浅色 | 深色之外的其它颜色 |
/**
* 主题色,通常作为按钮的背景色
* 默认值为 #FF5A28
* 支持自定义配置
*/
- (UIColor *)themeColor;
/**
* 警告颜色,通常作为警告性控件的背景色,一般用来强烈地警告用户,吸引用户的注意
* 默认值为 #FF4444
* 支持自定义配置
*/
- (UIColor *)warningColor;
/**
* 提示颜色,通常作为提示性控件的背景色,一般用来对用户的交互进行响应
* 默认值为 #00CC99
* 支持自定义配置
*/
- (UIColor *)tipsColor;
/**
* 引导颜色,通常作为引导性控件的背景色,一般用来对用户进行引导
* 默认值为 #1989FA
* 支持自定义配置
*/
- (UIColor *)guideColor;
/**
* Tab 栏选中颜色
* 默认值为 #FF5A28
* 支持自定义配置
*/
- (UIColor *)tabBarSelectedColor;
/**
* 背景色,App 界面的背景色
* 默认值为 #F8F8F8
* 支持自定义配置
*/
- (UIColor *)backgroundColor;
/**
* 导航栏背景色
* 默认值为 #FFFFFF
* 支持自定义配置
* 如果自定义,将使用自定义的值
* 如果未进行自定义,那么当 backgroundColor 是浅色,其值为 #FFFFFF
* 当 backgroundColor 是深色,其值为 backgroundColor 混合 #FFFFFF 10%
*/
- (UIColor *)navigationBarColor;
/**
* 底部 Tab 栏背景色
* 默认值为 #FFFFFF
* 当 backgroundColor 是浅色,其值为 #FFFFFF
* 当 backgroundColor 是深色,其值为 backgroundColor 混合 #FFFFFF 10%
*/
- (UIColor *)bottomTabBarBgColor;
/**
* 卡片背景色
* 默认值为 #FFFFFF
* 当 backgroundColor 是浅色,其值为 #FFFFFF
* 当 backgroundColor 是深色,其值为 backgroundColor 混合 #FFFFFF 10%
*/
- (UIColor *)cardBgColor;
/**
* 弹窗内容背景色
* 默认值为 #FFFFFF
* 当 backgroundColor 是浅色,其值为 #FFFFFF
* 当 backgroundColor 是深色,其值为 backgroundColor 混合 #FFFFFF 10%
*/
- (UIColor *)alertBgColor;
/**
* 弹窗蒙层色
* 默认值为 #000000 40%
* 如果自定义 alertMaskAlpha,那么弹窗蒙层色等于 #000000 alpha=alertMaskAlpha
* 如果并未自定义 alertMaskAlpha,那么当 backgroundColor 是浅色,
弹窗蒙层色为 #000000 40%,当 backgroundColor 是深色,弹窗蒙层色为 #000000 70%
*/
- (UIColor *)alertMaskColor;
/**
* 列表单元格背景颜色
* 默认值为 #FFFFFF
* 当 backgroundColor 是浅色,其值为 #FFFFFF
* 当 backgroundColor 是深色,其值为 backgroundColor 混合 #FFFFFF 10%
*/
- (UIColor *)listCellBgColor;
/**
* 大标题文字颜色
* 默认值为 #000000
* 当 backgroundColor 是浅色,其值为 #000000
* 当 backgroundColor 是深色,若 backgroundColor 与 themeColor、warningColor、
tipsColor、guideColor、tabBarSelectedColor 任何一个一样,那么其值为 #FFFFFF,
否则为 #FFFFFF 90%
*/
- (UIColor *)headLineColor;
/**
* 小标题文字颜色
* 默认值为 #000000
* 当 backgroundColor 是浅色,其值为 #000000
* 当 backgroundColor 是深色,若 backgroundColor 与 themeColor、warningColor、
tipsColor、guideColor、tabBarSelectedColor 任何一个一样,那么其值为 #FFFFFF,
否则为 #FFFFFF 70%
*/
- (UIColor *)subheadColor;
/**
* 辅助文字颜色
* 默认值为 #000000
* 当 backgroundColor 是浅色,其值为 #000000
* 当 backgroundColor 是深色,若 backgroundColor 与 themeColor、warningColor、
tipsColor、guideColor、tabBarSelectedColor 任何一个一样,那么其值为 #FFFFFF,
否则为 #FFFFFF 50%
*/
- (UIColor *)auxiLiaryColor;
/**
* 失效文字颜色
* 默认值为 #000000
* 当 backgroundColor 是浅色,其值为 #000000
* 当 backgroundColor 是深色,若 backgroundColor 与 themeColor、warningColor、
tipsColor、guideColor、tabBarSelectedColor 任何一个一样,那么其值为 #FFFFFF,
否则为 #FFFFFF 30%
*/
- (UIColor *)disableColor;
/**
* 主题背景下文字的颜色
* 默认值为 #FFFFFF
* 当 themeColor 是浅色,其值为 #000000
* 当 themeColor 是深色,其值为 #FFFFFF
*/
- (UIColor *)themeTextColor;
/**
* 警告颜色下文字的颜色,通常作为警告性控件上文本的颜色,一般用来强烈地警告用户,
吸引用户的注意
* 默认值为 #FFFFFF
* 当 warningColor 是浅色,其值为 #000000
* 当 warningColor 是深色,其值为 #FFFFFF
*/
- (UIColor *)warningTextColor;
/**
* 提示颜色下文字的颜色,通常作为提示性控件上文本的颜色,一般用来对用户的交互进行响应
* 默认值为 #FFFFFF
* 当 tipsColor 是浅色,其值为 #000000
* 当 tipsColor 是深色,其值为 #FFFFFF
*/
- (UIColor *)tipsTextColor;
/**
* 引导颜色下文字的颜色,通常作为引导性控件上文本的颜色,一般用来对用户进行引导
* 默认值为 #FFFFFF
* 当 guideColor 是浅色,其值为 #000000
* 当 guideColor 是深色,其值为 #FFFFFF
*/
- (UIColor *)guideTextColor;
/**
* 导航栏文字颜色
* 默认值为 #000000
* 当 navigationBarColor 是浅色,其值为 #000000
* 当 navigationBarColor 是深色,若 navigationBarColor 与 themeColor、warningColor、tipsColor、guideColor、tabBarSelectedColor 任何一个一样,那么其值为 #FFFFFF,
否则为 #FFFFFF 90%
*/
- (UIColor *)navigationBarTextColor;
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈