Личная точка доступа ломает макет пользовательского интерфейса

Когда персональная точка доступа активирована и размер панели изменяется до 40 пикселей, размер представления изменяется неправильно. Нижняя часть идет на 20 пикселей ниже экрана вместо изменения размера.

Я использую Auto Layout во всех своих контроллерах представления, но даже несмотря на то, что пользовательский интерфейс моего приложения ломается, как показано на рисунке ниже. введите здесь описание изображения

Любая помощь будет здорово.!


person Nilesh    schedule 14.06.2017    source источник
comment
Строка состояния имеет высоту 40 пикселей вместо 20, когда включена персональная точка доступа. поэтому вы должны настроить ограничения   -  person Anshad Rasheed    schedule 14.06.2017
comment
Да, вы правы, но это всего лишь обходной путь, и мне нужно конкретное решение. Спасибо за ваш комментарий.   -  person Nilesh    schedule 14.06.2017
comment
пожалуйста, проверьте мой ответ ниже   -  person Anshad Rasheed    schedule 14.06.2017


Ответы (2)


Зарегистрируйте это уведомление в своем 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

person Anshad Rasheed    schedule 14.06.2017

Вы можете проверить мой предыдущий ответ: ошибка при вызове строки состояния

Технически здесь происходит то же самое, что нарушает автомакет вашего представления.

person Aakash    schedule 14.06.2017
comment
Вы имеете в виду, что я должен добавить ограничение сверху суперпредставления, а не TLG, верно? - person Nilesh; 14.06.2017
comment
Я добавил ограничение сверху суперпредставления, но не решил проблему. - person Nilesh; 14.06.2017
comment
Да, такая же проблема возникла. - person Nilesh; 14.06.2017
comment
Если это не работает в вашем случае, вам нужно настроить ограничение в viewDidLayoutSubviews(), так как всякий раз, когда будет изменяться высота строки состояния, этот метод будет вызываться, вы можете проверить высоту строки состояния здесь и выполнить действия соответственно - person Aakash; 14.06.2017
comment
Давайте продолжим это обсуждение в чате. - person Nilesh; 14.06.2017