#ios #objective-c #iphone #cocoa-touch #uinavigationcontroller
#iOS #objective-c #iPhone #cocoa-touch #UINavigationController
Вопрос:
В моем приложении,
У меня есть навигационный контроллер с контроллером корневого представления.
Чтобы показать / скрыть панель навигации, которая работает нормально.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
BOOL navbarhide=[self.navigationController.navigationBar isHidden];
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES];
}
Работает хорошо, но,
Когда панель навигации скрыта, просмотрите изменения фрейма.
Когда панель навигации не скрыта, тогда просматривайте изменения фрейма.
Заранее спасибо…
Редактирование настройки set self.view.frame не оказывает никакого эффекта.
Ответ №1:
У меня такая же проблема. В моем проекте это связано с тем, что вид является видом прокрутки. Если ваш вид представляет собой вид прокрутки или табличный вид, вы можете попробовать это:
Я добавляю приведенный ниже код в контроллер.
self.automaticallyAdjustsScrollViewInsets = NO;
Надеюсь, это может вам помочь.
Ответ №2:
Вы не можете изменить фрейм self.view
. Я не использую setNavigationBarHidden:
скрытую панель навигации, а напрямую меняю фрейм self.NavigationController.NavigationBar. Таким образом, self.view.frame
не изменится.
CGRect frame = (navBarhidden) ? CGRectMake(0, -24,self.view.bounds.size.width,44) : CGRectMake(0, 20,self.view.bounds.size.width,44);
self.navigationController.navigationBar.frame = frame;
Комментарии:
1. но это оставляет черное пространство на его старом месте.
Ответ №3:
У меня возникла эта проблема при отображении полноэкранного режима UIView. Изменение размера фрейма сработало для меня. (Swift)
скрытие панели навигации:
self.navigationController!.navigationBar.hidden = true
self.view.frame.origin.y -= 64
self.view.frame.size.height = 64.0
снова отображается панель навигации:
self.navigationController!.navigationBar.hidden = false
self.view.frame.origin.y = 64
self.view.frame.size.height -= 64.0
Ответ №4:
Я думаю, что это функция по умолчанию, которая не может быть изменена вами, но вы меняете положение кнопки, используя следующий код
MyButton.frame = CGRectMake(X, Y, высота, ширина);
после скрытия панели навигации.
Комментарии:
1. на самом деле это тестовый код, который я хочу внедрить в свой app…so если ты сможешь добраться..
2. Когда вы нажимаете на кнопку, измените значения MyButton. Измените значения и попробуйте это. Я думаю, у вас будет свое решение.
3. Да, я могу перемещать кнопку, но в моем реальном приложении у меня много компонентов, поэтому перемещать компоненты неудобно !!!1
4. ОК. Так что попробуйте в реальном приложении, если у вас возникнут какие-либо трудности, тогда спросите меня.
Ответ №5:
я думаю, это может вам помочь
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
BOOL navbarhide=[self.navigationController.navigationBar isHidden];
[self.navigationController setNavigationBarHidden:!navbarhide animated:YES];
if(navbarhide)
self.view.frame=CGRectMake(0,0, 320, 480);
else
self.view.frame=CGRectMake(0,44, 320, 480);
}
Комментарии:
1. это не влияет, потому что навигация начинает скрываться после установки фрейма. и удаляет то, что вы сделали.
Ответ №6:
измените self.view.frame при отображении и скрытии панелей навигации
Ответ №7:
scrollView.contentInsetAdjustmentBehavior = .never
Комментарии:
1. Ответы только для кода улучшены с некоторым объяснением.