1# arkui子系统ChangeLog
2
3## cl.arkui.1 滚动事件上报滚动状态枚举值规则变更
4
5ScrollState枚举值在API version 9及以下上报规则:
6
7| 名称     | 描述                             |
8| ------ | ------------------------------ |
9| Idle   | 空闲状态。使用控制器提供的方法滚动、拖动滚动条滚动时触发。  |
10| Scroll | 手指拖动状态。使用手指拖动List滚动时触发。        |
11| Fling  | 惯性滚动状态。快速划动松手后惯性滚动和划动到边缘回弹时触发。 |
12
13从API version 10开始,ScrollState上报规则变更为:
14
15| 名称     | 描述                             |
16| ------ | ------------------------------ |
17| Idle   | 空闲状态。滚动状态回归空闲的时候触发,一个滚动流程的最后一帧回调。控制器提供的无动画的方法控制的滚动也会触发。  |
18| Scroll | 滚动状态。手指拖动List滚动时触发,拖动滚动条滚动时触发,滚动鼠标滚轮触发。        |
19| Fling  | 惯性滚动状态。由动画触发的滚动,包括快速划动松手后的惯性滚动,划动到边缘回弹的滚动,快速拖动内置滚动条松手后的惯性滚动,使用滚动控制器提供的带动画的方法控制的滚动。 |
20
21ScrollState枚举变更如下。
22
23| 场景     | API version 9及以下                         |API version 10开始                           |
24| ------ | ------------------------------ |------------------------------ |
25| 手指拖动滑动   | Scroll | Scroll |
26| 惯性滚动   | Fling | Fling |
27| 过界回弹   | Fling | Fling |
28| 鼠标滚轮滚动   | Idle | Scroll |
29| 拖动滚动条   | Idle | Scroll |
30| 滚动控制器滚动(带动画)   | Idle | Fling |
31| 滚动控制器滚动(不带动画)   | Idle | Idle |
32
33**变更影响**
34
351、ScrollState枚举值从API version 7开始提供,在API version 10变更,不影响API version 9及以下版本使用。<br/>
362、API version 9及以下使用到这个枚举值的接口有List组件的onScroll事件、onScrollFrameBegin事件、Scroll组件的onScrollFrameBegin事件,API version 9及以下滚动状态上报规则不变,不会产生影响;从API version 10开始,List组件的onScroll事件在文章起始列出的部分场景中上报的枚举值会有变化。
37
38**关键接口/组件变更**
39
40List组件接口文档:
41- [List组件事件](../../../application-dev/reference/arkui-ts/ts-container-list.md#事件)
42- [List组件ScrollState枚举说明](../../../application-dev/reference/arkui-ts/ts-container-list.md#scrollstate枚举说明)
43
44**适配指导**
45
46List组件绑定onScroll事件,通过onScroll事件上报当前滚动状态。API version 9及以下上报的滚动状态仍遵循变更前规则,从API version 10开始,上报的滚动状态遵循变更后规则。
47
48参考代码如下:
49```ts
50// xxx.ets
51@Entry
52@Component
53struct ListExample {
54  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
55
56  build() {
57    Column() {
58      List({ space: 20, initialIndex: 0 }) {
59        ForEach(this.arr, (item) => {
60          ListItem() {
61            Text('' + item)
62              .width('100%').height(100).fontSize(16)
63              .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
64          }
65        }, item => item)
66      }
67      .listDirection(Axis.Vertical) // 排列方向
68      .edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring
69      .onScroll((scrollOffset: number, scrollState: ScrollState) => {
70        console.log(`onScroll scrollState = ${ScrollState[scrollState]}, scrollOffset = ${[scrollOffset]}`)
71      })
72      .width('90%')
73    }
74    .width('100%')
75    .height('100%')
76    .backgroundColor(0xDCDCDC)
77    .padding({ top: 5 })
78  }
79}
80```
81
82## cl.arkui.2 ArkUI系统组件使用场景限制
83
84对ArkUI系统组件的使用场景进行限制,仅允许在struct的build方法内, pageTransition方法内或@Builder修饰的函数内使用。
85
86**示例:**
87
88```
89@Entry
90@Component
91struct Index {
92  build() {
93    Row() {
94    }
95
96  }
97}
98// ERROR:UI component 'Text' cannot be used in this place.
99Text('Hello World')
100```
101
102**变更影响**
103
104 如果ArkUI系统组件不在struct的build方法内,pageTransition方法内,@Builder修饰的函数内使用,编译报错。
105
106**关键的接口/组件变更**
107
108不涉及。
109
110**适配指导**
111
112 ArkUI系统组件必须在struct的build方法内,pageTransition方法内,@Builder修饰的函数内使用。
113
114## cl.arkui.3 RowSplit/ColumnSplit组件布局与行为变更
115
1161、RowSplit/ColumnSplit交叉轴方向未设置大小时,由当前的适应父节点大小改为适应子节点大小。
1172、RowSplit/ColumnSplit分割线拖动后子节点行为变更,变更前拖动分割线时,子节点不压缩和拉伸,只进行平移;
118变更后拖动分割线时,子节点拉伸和压缩。
1193、使用clip属性对子组件内容超出组件区域进行裁剪时,RowSplit裁剪区域由子组件区域的右侧改为子组件区域的左右两侧,
120ColumnSplit裁剪区域由子组件区域的下侧改为子组件区域的上下两侧。
121
122**变更影响**
123以上3点变更只影响API version 10及以后版本,API version 9及以前RowSplit/ColumnSplit组件布局与行为仍遵循变更前规则。
124
125**关键接口/组件变更**
126
127不涉及
128
129## cl.arkui.4 Search组件/TextInput组件/TextArea组件布局与行为变更
130
1311、Search/TextInput/TextArea中textRect中位置变更前仅相对padding偏移,变更后位置相对padding和border计算偏移。
1322、Search中textfield宽度变更前为search宽度减去search icon的宽度和icon左右space宽度,变更后需要再减去padding和border的宽度;
133
134**变更影响**
135
136以上变更只影响API version 10及以后版本,API version 9及以前仍遵循变更前规则。
137
138**关键的接口/组件变更**
139
140不涉及
141
142**适配指导**
143
144不涉及
145