当工具栏消失时,子视图会扩大

时间:2015-04-12 18:14:33

标签: ios objective-c xcode

我制作了一个子视图来录制如下所示的声音: http://i.stack.imgur.com/EBdEV.png

酒吧消失后,看起来像这样: http://i.imgur.com/sDAp4nk.png

我无法弄清楚原因。这是控制器。我可以打开/关闭故事板中的某些内容吗?

感谢您的帮助:)

#import "SubviewController.h"

@implementation SubviewController

@synthesize delegate;

- (void)viewWillAppear:(BOOL)inAnimated {
    [super viewWillAppear:inAnimated];
    if([self.delegate respondsToSelector:@selector(subviewControllerWillAppear:)]) {
        [self.delegate subviewControllerWillAppear:self];
    }
}

- (void)viewWillDisappear:(BOOL)inAnimated {
    if([self.delegate respondsToSelector:@selector(subviewControllerWillDisappear:)]) {
        [self.delegate subviewControllerWillDisappear:self];
    }
    [super viewWillDisappear:inAnimated];
}

- (void)presentFromViewController:(UIViewController *)inViewController animated:(BOOL)inAnimated {
    CGRect theBounds = inViewController.view.bounds;
    UIView *theView = self.view;
    UIView *theBackgroundView = [[UIView alloc] initWithFrame:theBounds];
    CGRect theFrame = theView.frame;

    theFrame.origin.x = (CGRectGetWidth(theBounds) - CGRectGetWidth(theFrame)) / 2.0;
    theFrame.origin.y = (CGRectGetHeight(theBounds) - CGRectGetHeight(theFrame)) / 2.0;
    theView.frame = theFrame;
    [inViewController addChildViewController:self];
    theBackgroundView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.8];
    theBackgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    theBackgroundView.alpha = 0.0;
    [theBackgroundView addSubview:theView];
    [inViewController.view addSubview:theBackgroundView];
    [UIView animateWithDuration:inAnimated ? 0.75 : 0.0
                     animations:^{
                         theBackgroundView.alpha = 1.0;
                     }
                     completion:^(BOOL inFinished) {
                         [self didMoveToParentViewController:inViewController];
                     }];
}

- (void)dismissAnimated:(BOOL)inAnimated {
    UIView *theView = self.view;
    UIView *theBackgroundView = theView.superview;

    [self willMoveToParentViewController:nil];
    [UIView animateWithDuration:inAnimated ? 0.75 : 0.0
                     animations:^{
                         theBackgroundView.alpha = 0.0;
                     }
                     completion:^(BOOL inFinished) {
                         [theBackgroundView removeFromSuperview];
                         [theView removeFromSuperview];
                         [self removeFromParentViewController];
                     }];
}

@end

@implementation SubviewSegue

- (void)perform {
    [self.destinationViewController presentFromViewController:self.sourceViewController animated:YES];
}

@end

1 个答案:

答案 0 :(得分:0)

检查您的约束条件。您可能有一个在2个子视图之间具有最小高度并且向下推动该工具栏的东西。

此外,当你自动布局开启动画帧时会发生很多奇怪的事情,所以要小心。