【发布时间】:2021-02-04 02:35:44
【问题描述】:
我有一个使用 AutoLayout 初始化的 ViewController 的视图。作为这个视图的一部分,我还有一个带有一些约束的 UIImageView - 0 上、0 左、0 右、300 下
在某些时候,我执行了一系列动画,其中一些放大并改变了图像的中心
self.imageView.center = CGPointMake(w*s/widthDivider, h-h*s/heightDivider);
一切看起来都很好,直到我不得不更改页面上的一些 UILabel 的文本,并且我注意到它会触发 AutoLayout,它将我的缩放图像恢复到其初始约束并破坏我的布局。
self.label.text = [NSString stringWithFormat:@"%d", 23];
在更改上述标签的文本时,有什么方法可以停止 AutoLayout 触发器?
如果我无法在文本更改时停止 AutoLayout 触发器,则重构使图像居中的动画也是基于约束的一种解决方案。
【问题讨论】:
-
self.label.translatesAutoresizingMaskIntoConstraints = NO? -
我在设置文本之前确实尝试过。不幸的是,它并没有解决问题
-
如果你使用自动布局,你不应该直接修改视图的框架,否则当自动布局再次运行时它会被重置。你应该做的是改变你的图像视图的约束而不是它的框架
-
是的,我在帖子中提到过。我最近读了很多,我计划在某个时候这样做,但是有很多重构要做,我正在寻找一种解决方法
-
也许将宽度设置为一个很大的数字 - 然后宽度是固定的,会适应变化,也许你不会触发
标签: ios objective-c swift autolayout