我尝试为view
(视图层次结构中的任何位置)设置动画以变为全屏。
为此,我将view
添加到UIWindow
个实例。
P.S。我使用的是砌砖
// replacing superview
[[UIApplication sharedApplication].keyWindow addSubview:self];
// fullscreen constraints
[self remakeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.superview);
}];
[UIView animateWithDuration:kAnimationDuration
animations:^{
[self layoutIfNeeded];
} completion:^(BOOL finished) {
}];
我遇到的问题是,当视图被添加到窗口时,它不会保持与之前相同的位置,我认为,这是正确的行为,但看起来很奇怪。
动画从错误的地方开始。
通过以下方式实现使用框架并不困难:
convertRect:toView:
)我如何使用autolayout
实现此目标?
(或者我仍然需要使用框架?)
答案 0 :(得分:0)
你基本上有你的问题的原因和解决方案。如果您没有更改超级视图,则不会出现问题。
按照您的描述获取并转换框架,但不要设置框架。使用框架设置初始约束。这将使视图保持在原始位置,即使它已移动到新的超视图(因此也是坐标系)。
现在将这些约束的常量设置设置为零。这将绘制视图的边缘以满足超视图边缘。