故事板设计屏幕子视图

时间:2013-12-20 00:36:37

标签: ios iphone objective-c storyboard childviewcontroller

我想使用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**);

2 个答案:

答案 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
  • 制作您的UIStoryboardSegue子类
  • 使用自定义视图外观代码覆盖- (void)perform方法
  • 使用segue常用方式