使用视图包含设置动画子视图问题

时间:2013-01-09 15:58:41

标签: ios uiview uiviewcontroller

我正在创建自己的自定义视图控制器:它包含另一个UIViewController并将该视图放在其工具栏下方。然后将容器视图控制器放在另一个视图上的任意帧上。

当我向此自定义UITableView添加UIViewController(以及可能还有其他视图)时,我遇到了问题(让我们称之为ContainerViewController),然后为调整大小设置动画ContainerViewController's视图。

问题是,当容器的动画调整大小开始时,所包含的tableview会被调整大小并放置 - tableview的大小调整根本没有动画。

一些示例代码:

我将tableview添加到viewDidLoad中的容器视图:

[self addChildViewController:self.subviewController];
[self.view addSubview:self.subviewController.view];
[self.subviewController didMoveToParentViewController:self];

[self.viewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

我在viewWillLayoutSubviews中设置了tableview的初始大小(在viewDidLoad中进行设置导致了其他无关的问题): (barController是顶部工具栏)

CGRect subviewFrame = [self.view bounds];
const CGFloat offset = CGRectGetHeight([self.barController.view frame]);
subviewFrame.origin.y += offset;
subviewFrame.size.height -= offset;
[self.subviewController.view setFrame:subviewFrame];

我为容器的大小调整动画:

[UIView animateWithDuration:0.2 animations:^{
    [containerViewController.view setFrame:[self aDifferentFrameSize]];
}];

0 个答案:

没有答案