gpt4 book ai didi

ios - 自动布局旋转轮

转载 作者:可可西里 更新时间:2023-11-01 03:38:17 25 4
gpt4 key购买 nike

我正在尝试使用 CGAffineTransformRotate 以其中心旋转 UIImageView 约束,但 View 在旋转时会抖动。如果我使用 CATransform3DRotate 来旋转它的图层,这不会发生,但是只要我编辑约束(更改常量),旋转的图像就会跳开。有人知道如何解决这个问题吗?

这是跳远的旋转图像的截图enter image description here

最佳答案

自动布局作用于 UIView 的框架。框架是根据 View 的中心、边界和转换属性计算的。默认情况下,view.transform 只是 CGAffineTransformIdentity,在此配置中,框架是一个与父 View 相同方向的矩形,具有与 View 边界相同的宽度和高度。

但是,当您修改 view.transform(或等效的 view.layer.transform)时,正如您所做的那样,这会破坏中心、边界和框架之间的可预测关系。例如,如果您的变换是 20 度旋转,那么框架将不再具有与边界相同的宽度和高度。现在框架将是(我认为......)任何矩形,方向与 super View 相同,需要包含现在旋转 20 度的原始矩形。

并且由于自动布局作用于框架属性,它现在可能会产生您不想要的布局。

例如,假设您的 View 在 10x10 框架矩形内呈现一个圆圈,该矩形通过空间限制与父 View 左上对齐。然后将其旋转 45 度。旋转的圆看起来是一样的。但是现在框架是旋转后可以包含原始矩形的最小矩形,这个最小的矩形是 10/sqrt(2) x 10/sqrt(2)。当自动布局将左上对齐应用到这个新框架时,您会看到您的圆圈向下移动并向右移动。它不再以 {5,5} 为中心,而是以 {5/sqrt(2),5/sqrt(2)} 为中心。

我认为解决这个问题的方法是手动调整布局约束“常量”参数以纠正变换的效果,或者类似地覆盖 alignmentRectForFrame 以强制自动布局在调整为补偿的 alignmentRect 上工作用于您的转换,或者定义您的原始约束以绑定(bind)到可能不受转换影响的 View 中心。

关于ios - 自动布局旋转轮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com