Utils 工具方法

更新时间:2023-10-12 08:00:23下载pdf

RatioUtils

RatioUtils 提供基于屏幕比例进行适配的快捷方法。

属性名称 解释
hRatio 屏幕水平比,即当前屏幕的宽和 ip6 屏幕的宽的比。
vRatio 屏幕垂直比,即当前屏幕的高和 ip6 屏幕的高的比。
width, viewWidth 当前屏幕宽。
height 当前屏幕高。
ratio 对角线比例,即当前屏幕对角线长度和 ip6 屏幕对角线长度的比。
convertX 通过 hRatio 换算长度。
convertY 通过 vRatio 换算长度。
convert 通过 ratio 换算长度。
isIos 是否是 iOS 系统。
isIphoneX,iPhoneX 是否属于 iPhoneX 系列(包括 iPhone XS 和 iPhone XS Max)。
import { Utils } from "tuya-panel-kit";

const { convertX } = Utils.RatioUtils;

// 某组件设计稿上宽13
width = convertX(13); // 最后该组件在当前设备的宽度

ColorUtils

ColorUtils 为颜色转换相关工具。

  • HSV 转 RGB
/**
 * @param {Number} h - Hue 表示色相, 0°~360°
 * @param {Number} s - Saturation 饱和度,0%~100%
 * @param {Number} v - Value 表示明度, 0%~100%
 * returns {Object} RGB的颜色值
 */

hsvToRgb(0, 1, 1); // {r: 255, g: 0, b: 0}
  • RGB 转 HSV
/**
 * @param {Number} r - 红色值, 0~255
 * @param {Number} g - 绿色值, 0~255
 * @param {Number} b - 蓝色值, 0~255
 * returns {Object} hsv的值
 */

rgbToHsv(255, 0, 0); // {h: 0, s: 1, v: 1}
rgbToHsv(128, 1, 0); // {h: 0, s: 1, v: 0.5019607843137255}
  • HSL 转 RGB
/**
 * @param {Number} h - Hue 表示色相, 0°~360°
 * @param {Number} s - Saturation 饱和度,0%~100%
 * @param {Number} l - Lightness 表示亮度, 0%~100%
 * returns {Object} RGB的颜色值
 */

hslToRgb(0, 1, 0.5); // {r: 255, g: 0, b: 0}
hslToRgb(120, 1, 0.75); // {r: 128, g: 255, b: 128}
hslToRgb(240, 1, 0.25); // {r: 0, g: 0, b: 128}
  • 2.4 rgb 转 hsl
/**
 * @param {Number} rr - 红色值, 0~255
 * @param {Number} gg - 绿色值, 0~255
 * @param {Number} bb - 蓝色值, 0~255
 * returns {Object} hsl的颜色值
 */

rgbToHsl(255, 0, 0); // {h: 0, s: 1, l: 0.5}
rgbToHsl(128, 255, 128); // {h: 120, s: 1, l: 0.7509803921568627}
rgbToHsl(0, 0, 128); // {h: 240, s: 1, l: 0.25098039215686274}

NumberUtils

数字相关工具。

  • toFixedString
/**
 * @param {Number} num
 * @param {Number} 返回的字符串的长度
 * returns {String}
 */

toFixedString(111, 5); // '00111'
  • toFilledString
/**
 * @param {Number} num
 * @param {Number} 返回的字符串的长度
 * returns {String}
 */

toFixedString(111, 5); // '00111'
  • getBitValue
/**
 * @param {Number} num
 * @param {Number} idx idx是反向的,它从0开始
 * returns {Number}
 */

// 17 = 10001(2)
getBitValue(17, 0); // 1
getBitValue(17, 1); // 0
getBitValue(17, 4); // 1
  • setBitValueWithOne
/**
 * @param {Number} idx idx是反向的,它从0开始
 * returns {Number}
 */
// 17 = 10001(2)
setBitValueWithOne(17, 0); // 17, 10001
setBitValueWithOne(17, 1); // 19, 10010
setBitValueWithOne(17, 5); // 49, 110001
  • setBitValueWithZero
/**
 * @param {Number} idx idx是反向的,它从0开始
 * returns {Number}
 */
// 17 = 10001(2)
setBitValueWithZero(17, 0); // 16, 10000
setBitValueWithZero(17, 1); // 17, 10001
setBitValueWithZero(17, 4); // 1, 00001
  • bytesToHexString
/**
 * @param {Array} 字节, 字节是一个8位整数的数字数组
 * returns {String}
 */
bytesToHexString([1, 2]); // '0102'
bytesToHexString([23, 2]); // '1702'
  • numToByteNumbers
/**
 * @param {Number} 转换而来的字符串,每个字符都是十六进制字符
 * returns {String}
 */
numToHexString(111); // '6f'
numToHexString(15); // '0f'
  • numToHexString
/**

 * @param {Number} number
 * returns {String}
 */

numToByteNumbers(111); // [0, 111]
numToHexString(1040001); // [15, 222, 129]
  • highLowToInt
/**
 * @param {Number} 一个高8的数字
 * @param {Number} 一个低8的数字
 * returns {Number}
 */

highLowToInt(11, 22); // 2838
highLowToInt(22, 11); // 5643
  • intToHighLow
/**
 * @param {Number} number
 * returns {Number} 一个数的数组,第一个是高8个数,第二个是低8个数
 */

highLowToInt(2838); // [11, 22]
highLowToInt(5643); // [22, 11]
  • inMaxMin
/**
 * @param {Number} value
 * @param {Number} value
 * @param {Number} value
 * returns {Number} 返回三个数中的中间值
 */

inMaxMin(2838, 1, 233); // 233
inMaxMin(1, 2, 0); // 1
  • scaleNumber
/**
 * @param {Number} value 一个10倍刻度的数字
 * @param {Number} value
 * returns {Number}
 */

scaleNumber(2, 10245); // 102.45
  • range
/**
 * @param {Number} start 初始值
 * @param {Number} end 结束值
 * @param {Number} value 步长
 * returns {Array} 返回从start到end,步长为step的数组
 */

range(1, 10); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 10, 2); // [1, 3, 5, 7, 9]
  • calcPosition
/**
 * @param {Number} value 原先值
 * @param {Number} min 原先最小范围
 * @param {Number} max 原先最大范围
 * @param {Number} newMin 新最小范围
 * @param {Number} newMax 新最大范围
 * returns {Number} 将原先范围内的值,转换为新范围内的值
 */

calcPosition(50, 0, 100, -100, 0); // -50
calcPosition(255, 0, 255, 0, 100); // 100
  • calcPercent
/**
 * @param {Number} min
 * @param {Number} max
 * @param {Number} value 值
 * returns {Number} offset  百分比起始偏移量(0 - 1)
 */

calcPercent(25, 255, 25); // 0
calcPercent(25, 255, 25, 0.1); // 0.1

TimeUtils

时间相关工具。

  • parseSecond
/**
 * @param {Number} t 基于秒的数
 * @param {Number} n 是一个数字,表示字符串长度固定,默认值为2
 * returns {Array} 一个字符串数组,每个项都是一个长度为n的字符串
 */

parseSecond(111); // ['00', '01', '51']
parseSecond(3333333); // ['25', '55', '33']
  • parseHour12
/**
 * @param {Number} t 基于秒的数
 * returns {String}
 */

parseHour12(111); // '01:55 AM'
parseHour12(3333333); // '12:01 PM'
  • stringToSecond
/**
 * @param {String} timeStr 时间点
 * returns {String} 从timeStr转换而来的数字
 */

stringToSecond("11:30"); // 690
stringToSecond("22:11:30"); // 79890
  • dateToTimer
/**
 * @param {String} dateStr 时间点
 * returns {String} 从dateStr转换而来的数字
 */

stringToSecond("11:30"); // 690
stringToSecond("22:11:30"); // 79890
  • dateFormat
/**
 * @param {String} 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * returns {String} 对Date的扩展,将 Date 转化为指定格式的String
 */

new Date().Format("yyyy-MM-dd hh:mm:ss.S"); // 2006-07-02 08:09:04.423
new Date().Format("yyyy-M-d h:m:s.S"); // 2006-7-2 8:9:4.18
  • timezone
/**
 * @desc 对Date的扩展,获取当前时区
 * returns {String} 当前时区
 */

timezone(); // +08:00

StringUtils

字符串工具类。

  • hexStringToNumber
/**
 * @param {String} bits,bits是一个十六进制字符串
 * returns {Array} 从基于16的位转换而来的数的数组
 */

hexStringToNumber("AD03"); // [173, 3]
  • hexStringToBinString
/**
 * @param {String} str,str是一个字符串,它包含“0”“1”,并且可以包含其他字符
 * returns {String} 从str转换而来的字符串,每个字符都是十六进制字符
 */

hexStringToBinString("A7B9"); // 1010011110111001
hexStringToBinString("0709"); // 0000011100001001
  • camelize
/**
 * @param {String} str,str是一个字符串
 * returns {String} 中划线和下划线转驼峰
 */

camelize("abb_aa-cc"); // abbAaCc

CoreUtils

核心工具类。

  • toFixed
/**
 * @param {String} str,str是一个字符串
 * @param {Number} str,count是number,返回字符串的长度
 * returns {String}
 */

toFixed("111", 5); // '00111'
toFixed("3456111", 5); // '56111'
  • toFilled
/**
 * @param {String} str,str是一个字符串
 * @param {Number} str,count是number,返回字符串的长度
 * returns {String}
 */

toFilled("111", 5); // '00111'
toFilled("3456111", 5); // '3456111'
  • partition
/**
 * @param {String} str,str是一个字符串
 * @param {Number} str,count是number,返回字符串的长度
 * returns {Array} 一个数组,其项是一个子字符串,其长度为块
 */

partition("1234567", 3); // ['123', '456', '7']
  • isObject
/**
 * @desc 判断是不是 object
 * @param {Any} 任何属性
 * returns {Boolean}
 */
  • isArray
/**
 * @desc 判断是不是 array
 * @param {Any} 任何属性
 * returns {Boolean}
 */
  • isDate
/**
 * @desc 判断是不是 date
 * @param {Any} 任何属性
 * returns {Boolean}
 */
  • isRegExp
/**
 * @desc 判断是不是 regexp
 * @param {Any} 任何属性
 * returns {Boolean}
 */
  • isBoolean
/**
 * @desc 判断是不是 boolean
 * @param {Any} 任何属性
 * returns {Boolean}
 */
  • isNumerical
/**
 * @desc 判断是不是 number
 * @param {Any} 任何属性
 * returns {Boolean}
 */

TemperatureUtils

温度相关工具类,数值取整。

  • f2c
/**
 * @param {Number} 华氏度
 * returns {Number} 华氏转摄氏
 */

f2c(100); // 38
  • c2f
/**
 * @param {Number} 摄氏度
 * returns {Number} 摄氏转华氏
 */

c2f(100); // 212

JsonUtils

JSON 相关。

  • parseJSON
/**
 * @param {String} str,str是一个字符串
 * returns {Object} 解析JSON字符串
 */

parseJSON("{a:1, b:2}"); // {a: 1, b: 2}