gpt4 book ai didi

ios - CGAffineTransform 和 NSLayoutConstraint 冲突

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:44 25 4
gpt4 key购买 nike

我有一个 View (mainView),它有 4 个约束,使它的所有 4 个边都粘在它的 super View 上。换句话说,我正在制作它,所以它的大小与它正上方的 super View 完全相同。

问题是,当我这样做时:

CGAffineTransform scaleT = CGAffineTransformMakeScale(0.7f, 0.7f);
self.mainView.transform = scaleT;

为了让它更小,我预计它会与约束发生冲突,但是没有抛出异常。

我期望它与约束冲突的原因是因为现在 mainView 小了 70%,所以它不可能坚持它的 super View 的边缘。

相反,它所做的是将自己置于其父 View 的中心!

我在这里错过了什么?

谢谢!

最佳答案

从 iOS 8.0 开始,自动布局以一种可预测的方式与变换一起工作。自动布局设置 View 的 centerbounds.size,它们被传递成为 View 层的 positionbounds.size。自动布局不查看 View 的 transform 或修改它。自动布局完成 View 定位后应用转换。

在 iOS 8.0 之前,自动布局试图将转换考虑在内,但结果很难理解,通常意味着您不应该尝试将自动布局和转换结合起来。

您可以在 “Constraints & transformations: How Auto Layout quietly became transform-friendly in iOS 8” by Vlas Voloshin 中找到更多详细信息.

关于ios - CGAffineTransform 和 NSLayoutConstraint 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069435/

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