HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iOS 8中自定义呈现的视图控制器的在线状态栏(双高)状态栏如何进行布局?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在iOS 7中,我可以处理自定义显示视图控制器的布局,也可以通过添加约束来解决通话状态栏,其中显示的视图控件具有与呈现视图控制器相同的中心和相同的宽度和高度.对于使用自动调整大小的宽度和高度,这是比较喜欢的,因为否则当通话状态栏消失时,由于某些原因,所呈现的视图控制器将从顶部保持下降20点.

然而,在iOS 8中,这个技巧不再奏效了.一方面,我通过实验发现,呈现视图控制器似乎不一定在容器视图中,所以我不能将这些约束添加到容器视图中. (“A Look Inside Presentation Controllers” 2014 WWDC video“A Look Inside Presentation Controllers” 2014 WWDC video不会将展示视图控制器放在那里)看起来,使用自动布局或自动调整大小的方式使显示的视图控制器填充容器视图将会起作用,但是我发现容器视图本身可能会在通话状态栏消失时(iOS 7中不是这样),仍然保持下降20点.

我一直在玩“A Look Inside Presentation Controllers” sample code,但即使这个代码也没有正确处理通话状态栏. (我仍然试图得到一个处理新的UIPresentationController API,顺便说一句.)

解决方法

为我工作的是为UIApplicationWillChangeStatusBarFrameNotification添加一个观察者,然后找到transitionContext.containerView()并更新框架.我注意到当查看调试时,当回到正常的状态栏高度时,transitionContext.containerView()框架没有被更新.
func willChangeStatusBarFrame(notification: Nsnotification)
{
    if let userInfo = notification.userInfo
    {
        if let value = userInfo[UIApplicationStatusBarFrameUserInfoKey] as? NSValue
        {
            let statusBarFrame = value.CGRectValue()
            let transitionView = UIApplication.sharedApplication().delegate!.window!!.subviews.last! as UIView
            var frame = transitionView.frame
            frame.origin.y = statusBarFrame.height-20
            frame.size.height = UIScreen.mainScreen().bounds.height-frame.origin.y
            UIView.animateWithDuration(0.35) {
                transitionView.frame = frame
            }
        }
    }
}

大佬总结

以上是大佬教程为你收集整理的iOS 8中自定义呈现的视图控制器的在线状态栏(双高)状态栏如何进行布局?全部内容,希望文章能够帮你解决iOS 8中自定义呈现的视图控制器的在线状态栏(双高)状态栏如何进行布局?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。