在我的应用中,我正在尝试制作动画,以便在收到通知时调整UIViewController
的大小。
我创建了一个封装了孩子的容器UIViewController
。然后我编写了下面的代码来调整孩子UIViewController
的大小。
[UIView animateKeyframesWithDuration:0.5
delay:0
options:0
animations:^{
[UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{
for(int i = 0; i < [self.viewControllers count]; i++) {
UIViewController *vc = [self.viewControllers objectAtIndex:i];
vc.view.frame = CGRectMake(0, [self topOffset], self.view.frame.size.width, self.view.frame.size.height-[self topOffset]);
}
}];
} completion:^(BOOL finished) {
}];
然而,现在发生的是立即执行高度变化并且y变化是动画的,使得它看起来像是向下滑动。关于我可以改变什么以使它只是调整大小的任何想法?
答案 0 :(得分:0)
在动画之前,所有VC必须有一个框架
for(int i = 0; i < [self.viewControllers count]; i++) {
UIViewController *vc = [self.viewControllers objectAtIndex:i];
vc.view.frame = self.view.frame;
}
[UIView animateKeyframesWithDuration:0.5
delay:0
options:0
animations:^{
[UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{
for(int i = 0; i < [self.viewControllers count]; i++) {
UIViewController *vc = [self.viewControllers objectAtIndex:i];
vc.view.frame = CGRectMake(0, [self topOffset], self.view.frame.size.width, self.view.frame.size.height-[self topOffset]);
}
}];
} completion:^(BOOL finished) {
}];
高度必须像这样计算
self.view.frame.size.height - 2 * [self topOffset]
如果你想从底部到相同的距离