gpt4 book ai didi

ios - 如何使 incall overlay 不将 ui 向下推

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:41 24 4
gpt4 key购买 nike

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

状态栏的扩展高度将我的用户界面向下推,使其部分消失,在底部。

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

我该如何实现?

最佳答案

最简单的解决方案是确保您的 View 的 springs-and-strutsAutolayout 属性允许压缩或扩展 View ,如果您有一些复杂的 UI然后你可以实现 UIApplicationWillChangeStatusBarFrameNotification 观察者。

您可以处理 UIApplicationWillChangeStatusBarFrameNotificationUIApplicationDidChangeStatusBarOrientationNotification 通知,它们会告诉您状态栏的新大小。

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

-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(statusFrameChanged:)
name:UIApplicationWillChangeStatusBarFrameNotification
object:nil];
}

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

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

UIScreen *screen = [UIScreen mainScreen];
CGRect viewRect = screen.bounds;

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

- (void)viewWillLayoutSubviews
{
[super 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 setTransform:CGAffineTransformMakeScale(1.0, scale)];
self.view.frame = baseFrame;
}

关于ios - 如何使 incall overlay 不将 ui 向下推,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24871448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com