【问题标题】:Personal Hotspot breaks UI layout个人热点打破 UI 布局
【发布时间】:2017-06-14 06:59:33
【问题描述】:

当个人热点被激活并且 bar 将自身大小调整为 40 像素时,视图不会正确调整大小。底部在屏幕下方 20 像素处,而不是调整大小。

我在我的所有视图控制器中都使用自动布局,但即使我的应用程序 UI 出现如下图所示的中断。

任何帮助都会很棒!

【问题讨论】:

  • 个人热点开启时状态栏的高度是 40 像素而不是 20 像素。所以你应该调整约束
  • 是的,你说得对,但这只是一种解决方法,我需要一个具体的解决方案。感谢您的评论。
  • 请在下方查看我的答案

标签: ios ios-autolayout hotspot


【解决方案1】:

在您的 viewdidload 中注册此通知

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(statusBarFrameWillChange:)name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
}



  - (void)statusBarFrameWillChange:(NSNotification*)notification
{
     NSLog(@"STATUS BAR UPDATED");
int statusHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
NSLog(@"status bar height  %d", statusHeight);
    // Here you can do your constraint adjustments accordingly
}

你可以在这里找到一个很好的教程(快速)http://studyswift.blogspot.in/2015/12/adjust-ui-components-programmatically.html

【讨论】:

    【解决方案2】:

    你可以查看我之前的回答iOS App layout is wrong with calling status bar

    这里发生了同样的事情,它破坏了视图的自动布局。

    【讨论】:

    • 你的意思是我必须在超级视图的顶部添加约束,而不是 TLG,对吧?
    • 我在超级视图的顶部添加了约束,但没有解决问题。
    • 是的,发生了同样的问题。
    • 如果它在您的情况下不起作用,那么您需要调整 viewDidLayoutSubviews() 中的约束,因为只要状态栏高度发生变化,就会调用此方法,您可以检查状态栏的高度在这里并相应地执行操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多