keep_transform.zh.md
August 8, 2025 · View on GitHub
保持变换状态
翻译:English
ZoomImage 在以下属性改变时会直接重置变换状态:
- rotation
- contentScale
- alignment
- readMode
- scalesCalculator
- limitOffsetWithinBaseVisibleRect
- containerWhitespaceMultiple
- containerWhitespace
containerSize 改变
仅当 containerSize 属性改变时,ZoomImage 会根据新的 containerSize 和当前变换状态 恢复变换状态,确保用户当前可见的中心点始终位于屏幕中央,这样当你在桌面平台上改变窗口大小时,ZoomImage 就会自动适应新的窗口大小并保持可见中心不变,可见范围也会随之变化
Tip
当 containerSize 属性改变的同时有上述其它属性也发生了改变,ZoomImage 会直接重置变换状态
contentSize 改变
默认情况下仅当 contentSize 属性改变时,ZoomImage 会直接重置变换状态
但在你将 keepTransformWhenSameAspectRatioContentSizeChanged 属性设置为 true 后,ZoomImage
会恢复变换状态,确保用户可见的范围始终保持不变。这样在先显示缩略图,然后用户操作了变换,最后再显示原图的场景下就不会重置变换状态了
keepTransformWhenSameAspectRatioContentSizeChanged
属性仅在切换相同宽高比的图像时才会工作,因此此功能仅适用于缩略图和原图切换时的场景,所以它默认没有开启
val zoomState: ZoomState by rememberSketchZoomState()
zoomState.zoomable.setKeepTransformWhenSameAspectRatioContentSizeChanged(true)
SketchZoomAsyncImage(
uri = "https://sample.com/sample.jpeg",
contentDescription = "view image",
modifier = Modifier.fillMaxSize(),
zoomState = zoomState,
)
Tip
当 contentSize 属性改变的同时有上述其它属性也发生了改变,ZoomImage 会直接重置变换状态