嗨其他软件工程师,我需要很大的帮助:) 在此先感谢您的帮助!
以下是我的问题:
包含在VIEW A中的视图B
VIEW B已自动调整所有选项([.flexibleWidth, .flexibleHeight, .flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin])
,因为如果VIEW A的高度发生变化,我希望VIEW B使用VIEW A调整大小。
到目前为止它的工作原理... VIEW B被正确移动和调整大小但是当我在VIEW B上应用了变换旋转时,我尝试了相同的VIEW A高度变化。
以下是发生的事情:
我建议在更改其大小时手动设置VIEW A中每个视图的帧。但我发现它非常“ Mc Gyverish ”,考虑到VIEW A可以包含很多像VIEW B这样的观点
答案 0 :(得分:0)
autoresizingMask
的预期行为。使用Autolayout
解决此问题。这种更常见的方式可以完全适用于您描述的常见情况。
Autolayout
和autoresizingMask
也不相同。
约束:
答案 1 :(得分:0)
使用autolayout并完全调整大小。 以下是您可以尝试的方法。
第1步: 做自动布局。 (取决于您的红色视图的位置.Mine是正确和顶部约束)
第2步: 做自动修复。
右键单击红色视图并将光标放到主视图中,然后选择相等宽度和相等高度。
我已经改变了我的redView的宽度,宽高比值为0.6。
使用这种技术,redView可以根据设备大小轻松调整。
如果您想使用约束更改进行动画处理,请添加 始终使用
[self.view layoutIfNeeded];
就像这样
-(void)rotate {
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.3 animations:^{
self.redView.transform = CGAffineTransformMakeRotation(M_PI_2);
[self.view layoutIfNeeded];
}];
self.redView.transform = CGAffineTransformIdentity;
}
有一些有用的堆栈答案为什么我们需要这个。如果你想知道原因,可以谷歌吧。 :)