• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkUI子系统Changelog
2
3## cl.arkui.1 属性字符串TextStyle类型fontStyle、fontWeight字段返回类型变更
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11接口实际行为与文档描述不一致。
12
13**变更影响**
14
15此变更涉及应用适配。
16
17| 字段名 | 描述 |变更前类型 | 变更后类型 |
18|---------| ---------|---------| ------|
19| fontWeight | 获取属性字符串的文本字体粗细。| string | number |
20| fontStyle | 获取属性字符串的文本字体样式。 | string | FontStyle |
21
22**起始API Level**
23
24接口起始版本为API version 12。
25
26**变更发生版本**
27
28从OpenHarmony SDK 5.1.0.49开始,API version 18及以上生效。
29
30**变更的接口/组件**
31
32属性字符串的getStyles接口。
33
34**适配指导**
35
36变更后,使用getStyles接口获得的TextStyle类型变量中fontStyle、fontWeight字段将会返回FontStyle和number类型而非之前的string类型,应用需要使用新的返回类型来进行判断。
37
38``` ts
39@Entry
40@Component
41struct styled_string_demo1 {
42  scroll: Scroller = new Scroller();
43  fontStyleAttr1: TextStyle = new TextStyle({ fontColor: Color.Blue, fontWeight: FontWeight.Bolder, fontStyle: FontStyle.Normal });
44  fontStyleAttr2: StyledStringValue = new TextStyle({ fontColor: Color.Orange, fontStyle: FontStyle.Italic, fontWeight: FontWeight.Lighter });
45  mutableStyledString1: MutableStyledString = new MutableStyledString("运动45分钟", [{
46    start: 0,
47    length: 3,
48    styledKey: StyledStringKey.FONT,
49    styledValue: this.fontStyleAttr1
50  }, {
51    start: 3,
52    length: 3,
53    styledKey: StyledStringKey.FONT,
54    styledValue: this.fontStyleAttr2
55  }]);
56  controller1: TextController = new TextController();
57
58  build() {
59    Column() {
60      Scroll(this.scroll) {
61        Column() {
62          // 显示属性字符串
63          Text(undefined, { controller: this.controller1 })
64            .onAppear(() => {
65              this.controller1.setStyledString(this.mutableStyledString1)
66            })
67
68          Button('查询样式')
69            .onClick(() => {
70              let styles = this.mutableStyledString1.getStyles(0, this.mutableStyledString1.length)
71              for (let i = 0; i < styles.length; i++) {
72                console.info('StyledString style object start:' + styles[i].start)
73                console.info('StyledString style object length:' + styles[i].length)
74                console.info('StyledString style object key:' + styles[i].styledKey)
75                if (styles[i].styledKey === 0) {
76                  let fontAttr = styles[i].styledValue as TextStyle;
77                  console.info('StyledString fontStyle type:' + typeof fontAttr.fontStyle)
78                  console.info('StyledString fontWeight type:' + typeof fontAttr.fontWeight)
79                }
80              }
81            })
82            .margin({ top: 10 })
83        }.width('100%')
84      }
85    }
86    .width('100%')
87  }
88}
89```
90
91## cl.arkui.2 CanvasRenderer的measureText方法传undefined参数时返回值变更
92
93**访问级别**
94
95公开接口
96
97**变更原因**
98
99measureText方法传undefined参数时,返回的textMetrics为undefined,和W3C标准行为不一致。
100
101**变更影响**
102
103变更前:
104measureText方法传undefined参数时,返回的textMetrics为undefined。
105
106变更后:
107measureText方法传undefined参数时,返回值为按照字符串"undefined"测量的textMetrics。
108
109
110**起始API Level**
111
112API 8
113
114**变更发生版本**
115
116从OpenHarmony SDK 5.1.0.49开始。
117
118**变更的接口/组件**
119
120CanvasRenderingContext2D和OffscreenCanvasRenderingContext2D的measureText方法
121
122**适配指导**
123
124如果应用无需获取undefined参数的textMetrics,可在调用measureText方法前对参数做判断。
125
126**示例**
127
128```ts
129@Entry
130@Component
131struct Demo {
132  private settings: RenderingContextSettings = new RenderingContextSettings(true)
133  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
134
135  measureText(text: string)
136  {
137    if (text != undefined) {
138      let metrics = this.context.measureText(text);
139      console.info('width = ' + metrics.width);
140    }
141  }
142
143  build() {
144    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
145      Canvas(this.context)
146        .width('100%')
147        .height('100%')
148        .onReady(() => {
149          this.measureText(undefined)
150          this.measureText('Hello World')
151        })
152    }
153    .width('100%')
154    .height('100%')
155  }
156}
157```