我想使用Storyboards为滑块设计内容,而设计屏幕外内容的一种简单方法就是使用childViewController。所以我已经完成了这个
myViewController = [[UIStoryboard storyboardWithName:@"ipad" bundle:NULL] instantiateViewControllerWithIdentifier:@"keyPadOffScreen"];
[self addChildViewController:myViewController];
[myViewController didMoveToParentViewController:self];
newView = myViewController.view;
[self.view addSubview:newView];
这会将整个视图控制器添加到我的根视图之上。问题是,我只想要显示一个子视图,而不是整个视图。我可以处理动画,只要我知道如何添加根视图。我试过这个只是添加子视图(sliderView是我想要的子视图的名称)而不是整个视图,但是没有做任何事情
newView = myViewController.sliderView;
[self.view addSubview:newView];
我应该使用不同的策略吗?
编辑:这可行,但看起来很愚蠢 - 将视图大小设置为子视图的大小。
newView.frame = CGRectMake(newView.frame.origin.x, newView.frame.origin.y, newView.frame.size.width, **myViewController.sliderView.frame.size.height**);
答案 0 :(得分:1)
对于一个视图来说似乎有点矫枉过正。一旦你开始做很多自定义视图/动画/过渡的东西,它通常更容易在代码中实现,或者至少它对我来说,因为我已经这样做了很长时间。
但也许你想坚持使用Storyboard。我尊重。如果你有一些开发人员正在研究这个问题,那么在设置UI方面保持一致性非常重要。
不是将其保存在单独的视图控制器中,而是在需要它在屏幕上设置动画时添加它,只需将其添加到现有视图控制器并将其设置为隐藏,或在IB中将其设置为0.0。然后你的动画可以撤消它并让它可见。
答案 1 :(得分:0)
您可以在此处使用自定义segue,例如:
@implementation FRPresentEnteringPopupSegue
- (void)perform
{
FirstVC *toVC = self.destinationViewController;
SecondNavigationController *fromVC = self.sourceViewController;
toVC.view.frame = CGRectMake(0.0, 0.0, 300.0, 135.0);
toVC.view.center = CGPointMake(fromVC.view.bounds.size.width/2, fromVC.view.bounds.size.height + toVC.view.bounds.size.height/2);
[fromVC.view addSubview:toVC.view];
[toVC viewWillAppear:YES];
[UIView animateWithDuration:0.5
delay:0.0
usingSpringWithDamping:0.7
initialSpringVelocity:0.5
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
toVC.view.center = CGPointMake(fromVC.view.bounds.size.width/2, fromVC.view.bounds.size.height/2);
}completion:^(BOOL finished) {
[toVC viewDidAppear:YES];
}];
}
@end
- (void)perform
方法