菜鸟教程小白 发表于 2022-12-12 10:50:49

ios - 如何使 incall 覆盖不会将 ui 向下推


                                            <p><p>我有一个 iOS 应用程序。它工作得很好。
除非用户有热点或正在通话但通话应用已最小化</p>

<p>状态栏的扩展高度将我的 ui 向下推,使其一部分消失,
在底部。</p>

<p>我希望这个扩展栏覆盖在屏幕顶部,而不是将 ui 向下推。</p>

<p>我如何做到这一点?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>最简单的解决方案是确保 View 的 <code>springs-and-struts</code> 或 <code>Autolayout</code> 属性允许 View 的压缩或扩展,如果您有一些复杂的 UI然后你可以实现 <code>UIApplicationWillChangeStatusBarFrameNotification</code> 观察者。</p>

<p>您可以处理 <code>UIApplicationWillChangeStatusBarFrameNotification</code> 和 <code>UIApplicationDidChangeStatusBarOrientationNotification</code> 通知,它们会告诉您状态栏的新大小。</p>

<p>如果您打算在 View 上使用变换来处理大小调整,则可以在 ViewController (可能在公共(public)基类中)实现 -viewWillLayoutSubviews 以在 ViewController 的 Root View 上设置变换。</p>

<pre><code>-(void)viewDidAppear:(BOOL)animated
{
    ;
    [ addObserver:self
                                             selector:@selector(statusFrameChanged:)
                                                 name:UIApplicationWillChangeStatusBarFrameNotification
                                             object:nil];
}

-(void)viewDidDisappear:(BOOL)animated
{
    ;
    [ removeObserver:self
                                                    name:UIApplicationWillChangeStatusBarFrameNotification
                                                object:nil];
}

- (void)statusFrameChanged:(NSNotification*)note
{
    CGRect statusBarFrame = CGRectValue];
    CGFloat statusHeight = statusBarFrame.size.height;

    UIScreen *screen = ;
    CGRect viewRect = screen.bounds;

    viewRect.size.height -= statusHeight;
    viewRect.origin.y = statusHeight;
    self.view.frame = viewRect;
    ;
}

- (void)viewWillLayoutSubviews
{
    ;

    CGRect baseFrame = self.view.frame;
    // 548.0 is the full height of the view.Update as necessary.
    CGFloat scale = self.view.frame.size.height / 548.0;
    ;
    self.view.frame = baseFrame;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何使 incall 覆盖不会将 ui 向下推,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24871448/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24871448/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何使 incall 覆盖不会将 ui 向下推