Jak zapobiec zasłanianiu widoku UINavigationBar w systemie iOS 7?
Po aktualizacji do Xcode 5, paski nawigacji we wszystkich widokach mojej aplikacji przesunęły się w dół. Oto kilka zrzutów ekranu, pierwszy pokazujący wszystko w widoku, gdy jest ściągnięty, a drugi pokazujący wszystko nietknięte. Pasek wyszukiwania powinien zaczynać się tam, gdzie pasek nawigacji.
Ktoś wie, jak Mogę to naprawić?Edit: próbowałem tego wcześniej:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Ale daje bardzo dziwne wyniki.
Może to być spowodowane tym, że mam "menu slajdów" pod tym kontrolerem widoku, które pojawia się ze względu na przezroczystość paska nawigacyjnego.
10 answers
Ustaw właściwość paska nawigacji na No :
self.navigationController.navigationBar.translucent = NO;
To naprawi widok z ramki pod paskiem nawigacji i paskiem stanu.
Jeśli musisz pokazać i ukryć pasek nawigacji, użyj
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone; // iOS 7 specific
W Twojej metodzie viewDidLoad
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-06 05:51:43
In iOS 7
by defaults all Controller translucent property value is YES, so you set translucent property NO for this issue.
self.navController.navigationBar.translucent = NO;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-05 19:39:57
Możesz wyłączyć "Rozszerz krawędzie" w Inspektorze atrybutów kontrolera widoku tego ekranu (jak pokazano na poniższym obrazku) :
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-02 05:23:05
Jeśli chcesz zachować przezroczystość na navigationBar
, na końcu viewDidLoad
lub w viewWillAppear
Dodaj tę linijkę kodu:
[self.view sendSubviewToBack:self.tableView]
Somehow if your scrollView
subclass (UITableView
, UICollectionView
, itd.) ma wartość index
0 w bieżącym widoku subviews
, automatycznie dostosuje wkładki zgodnie z twoim navigationBar
. I nie powinno to wpływać na twój interfejs użytkownika w wersjach poprzedzających iOS7.
EDIT
Jeśli programowo zainicjujesz swoją UITableView
, to najlepiej dodać ją do widoku za pomocą to [self.view insertSubview:self.tableView atIndex:0];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-01 13:50:19
To działa również dla swift na iOS 8.1
navigationController?.navigationBar.translucent = false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-20 20:59:23
Możesz dodać tę metodę do kontrolera widoku, jak pokazano na tym URL :
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.searchBar.frame =
CGRectMake(0, self.topOfViewOffset, self.searchBar.frame.size.width, self.searchBar.frame.size.height);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-17 08:58:58
Innym podejściem jest ustawienie self.automaticallyAdjustsScrollViewInsets = YES;
na kontrolerze widoku.
Jest to domyślnie włączone. Ale w Twoim przypadku:
Widzę, że używasz EGORefreshHeaderView. Gra z contentInset UITableView. Po zwolnieniu nagłówek zresetuje górną wstawkę zamiast przywrócić poprzednią wartość.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-05 19:55:17
Swift 4:
Ustaw następujący wiersz kodu w metodzie viewDidLoad:
self.navigationController?.navigationBar.isTranslucent = false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-04 05:31:26
Jeśli chcesz mieć pełną kontrolę nad widokami i uniknąć błędnych korekt iOS, podklasa UITableView i dostosować wstawki (zarówno przewijanie i wskaźniki) w -(void)willMoveToWindow:(uiwindow *)newWindow. Mi pasuje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-04 21:38:39
Inną opcją jest otwarcie informacji.plik plist w trybie kodu źródłowego i wprowadź następujące informacje:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarHidden</key>
<true/>
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-05 19:40:17