我有一个视图(mainView),它有4个约束,使它将所有4个边都粘贴到它的superview上。换句话说,我正在制作它,使它的大小与其正上方的superview完全相同。
问题是,当我这样做的时候:
CGAffineTransform scaleT = CGAffineTransformMakeScale(0.7f, 0.7f);
self.mainView.transform = scaleT;为了使它更小,我希望它与约束冲突,但是没有抛出异常。
我期望它与约束冲突的原因是因为现在mainView小了70%,所以它不可能坚持它的superview的边缘。
相反,它所做的是以它的superview为中心!
这里我漏掉了什么?
谢谢!
发布于 2015-10-31 14:02:43
从iOS 8.0开始,自动布局以可预测的方式与变换一起工作。Auto layout设置视图的center和bounds.size,它们被传递成为视图图层的position和bounds.size。自动布局不会查看视图的transform或对其进行修改。转换是在自动布局完成视图定位后应用的。
在iOS 8.0之前,自动布局试图将转换考虑在内,但结果很难理解,通常意味着您不应该尝试将自动布局和转换结合起来。
您可以在“Constraints & transformations: How Auto Layout quietly became transform-friendly in iOS 8” by Vlas Voloshin中找到更多详细信息。
发布于 2014-11-26 18:44:03
尝试将描述的代码粘贴到
作为:
- (void)viewDidLayoutSubviews
{
CGAffineTransform scaleT = CGAffineTransformMakeScale(0.7f, 0.7f);
self.mainView.transform = scaleT;
}因为自动布局可以对viewDidLoad的transform属性进行任何更改。
https://stackoverflow.com/questions/26069435
复制相似问题