首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGAffineTransform和NSLayoutConstraint冲突

CGAffineTransform和NSLayoutConstraint冲突
EN

Stack Overflow用户
提问于 2014-09-27 06:55:02
回答 2查看 1.7K关注 0票数 3

我有一个视图(mainView),它有4个约束,使它将所有4个边都粘贴到它的superview上。换句话说,我正在制作它,使它的大小与其正上方的superview完全相同。

问题是,当我这样做的时候:

代码语言:javascript
复制
CGAffineTransform scaleT = CGAffineTransformMakeScale(0.7f, 0.7f);
self.mainView.transform = scaleT;

为了使它更小,我希望它与约束冲突,但是没有抛出异常。

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

相反,它所做的是以它的superview为中心!

这里我漏掉了什么?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-10-31 14:02:43

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2014-11-26 18:44:03

尝试将描述的代码粘贴到

  • (void)viewDidLayoutSubviews

作为:

代码语言:javascript
复制
 - (void)viewDidLayoutSubviews
{
    CGAffineTransform scaleT = CGAffineTransformMakeScale(0.7f, 0.7f);
    self.mainView.transform = scaleT;
}

因为自动布局可以对viewDidLoad的transform属性进行任何更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26069435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档