Depois de atualizar para o Xcode 5, as barras de navegação em todas as visualizações do meu aplicativo diminuíram. Aqui estão algumas capturas de tela, a primeira mostrando tudo na visualização conforme é puxado para baixo e a segunda mostrando tudo intocado. A barra de pesquisa deve começar onde a barra de navegação.
Alguém sabe como posso consertar isso?
editar: tentei esta recomendação anteriormente:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Mas produz resultados muito estranhos.
Isso pode ser porque eu tenho um "menu de slides" sob este controlador de visualização que está aparecendo devido à transparência da barra de navegação.
ios
objective-c
ios7
uinavigationbar
uistatusbar
Sam D20
fonte
fonte
Respostas:
Defina a propriedade translúcida da barra de navegação como NÃO :
Isso corrigirá o enquadramento da visualização abaixo da barra de navegação e da barra de status.
Se você tiver que mostrar e ocultar a barra de navegação, use
em seu
viewDidLoad
método.fonte
viewDidLoad
no entanto, não produz alterações.Por
iOS 7
padrão, todos os valores da propriedade translúcida do Controlador são SIM, portanto, você define a propriedade translúcida NÃO para esse problema.fonte
Você pode desativar a opção "Estender bordas" no inspetor de atributos do Controlador de visualização desta tela (conforme mostrado na imagem abaixo):
fonte
Isso funciona para o Swift também no iOS 8.1
fonte
Se você deseja manter a translucidez em seu
navigationBar
, no final de seuviewDidLoad
ou em seu,viewWillAppear
adicione esta linha de código:De alguma forma, se a sua
scrollView
subclasse (UITableView
,UICollectionView
, etc.) é aindex
0 em sua visão atualsubviews
, ele irá ajustar automaticamente as inserções de acordo com o seunavigationBar
. E também não deve afetar sua IU em versões anteriores ao iOS7.EDITAR Se você inicializar seu
UITableView
programaticamente, é melhor adicioná-lo à visualização usando este[self.view insertSubview:self.tableView atIndex:0];
fonte
[self.view insertSubview:self.tableView atIndex:0];
vez de enviá-la para trás depois de adicioná-la.Swift 4 :
Defina a seguinte linha de código no método viewDidLoad:
fonte
Você pode adicionar este método em seu controlador de visualização, conforme mostrado neste URL :
fonte
Outra abordagem é definir
self.automaticallyAdjustsScrollViewInsets = YES;
em seu controlador de visualização. Isso é ativado por padrão. Mas no seu caso:Vejo que você está usando EGORefreshHeaderView. Ele reproduz com contentInset de UITableView. Portanto, ao liberá-lo, o cabeçalho redefinirá a inserção superior em vez de restaurar o valor anterior.
fonte
Se você deseja ter controle total sobre as visualizações e evitar ajustes defeituosos do iOS, subclasse UITableView e ajuste as inserções (rolagem e indicadores) em - (void) willMoveToWindow: (UIWindow *) newWindow. Funciona para mim.
fonte
Outra opção é abrir seu arquivo Info.plist no modo de código-fonte e inserir as seguintes informações:
Espero que isto ajude.
fonte