3

我正在使用 aUIPageViewController来显示照片库类型的应用程序。

每页一张照片,每页之间滑动。

当第UIPageViewController一个出现时(即通过点击图库视图中的照片),状态栏会隐藏。

这是正确的,除了在内部显示的第一个(UIViewController即根视图控制器)viewWillAppear并且短了 20 个点(即状态栏的高度)。viewDidAppearself.view.height

它只影响初始视图控制器。当我旋转视图控制器并重新布局界面(使用 AutoLayout)时,一切正常,高度恢复到应有的水平。

如果我摆脱UIPageViewController它一切正常。

在我UIPageViewController做这个...

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.modelController.event = self.event;

    PhotoViewController *initialController = [self.modelController viewControllerAtIndex:self.initialIndex storyboard:self.storyboard];

    [self setViewControllers:@[initialController]
                   direction:UIPageViewControllerNavigationDirectionForward
                    animated:NO
                  completion:^(BOOL finished) {

                  }];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}

然后在 PhotoViewController...

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    self.commentTopLayoutConstraint.constant = self.view.frame.size.height;
    self.commentHeightLayoutConstraint.constant = self.view.frame.size.height - TOP_SPACING;

    self.embeddedCommentView.hidden = NO;

    if (self.imageView.image == nil) {
        [self configureView];
    }
}

这应该commentView.height等于视图高度减去 60,然后将评论视图向下推,使其从屏幕底部消失。

这适用于除第一个之外的所有视图控制器(即其他页面)。

如果我自动旋转它就可以了。就在初始负载上。

4

0 回答 0