Use o título da barra de navegação aumentada no iOS 11




iphone uinavigationbar (4)

A única alteração feita na API UINavigationBar para iOS 11 é prefersLargetitles apenas aos prefersLargetitles . confira here

Você pode fazer isso com seus próprios aplicativos com uma pequena alteração: marque "Prefere títulos grandes" para sua barra de navegação no IB, ou se você preferir fazer isso no código usando

navigationController?.navigationBar.prefersLargeTitles = true

Editar

Se você precisar alterar os atributos de texto do título grande, precisará usar a nova propriedade UINavigationBar no UINavigationBar :

UINavigationBar.appearance().largeTitleTextAttributes = [
    NSForegroundColorAttributeName: UIColor.white
]

Atualização para o Swift 4.2:

Como NSForegroundColorAttributeName foi renomeado para NSAttributedString.Key.foregroundColor , use:

  UINavigationBar.appearance().largeTitleTextAttributes = [
      NSAttributedString.Key.foregroundColor: UIColor.black
  ]

O iOS 11 Beta 1 usa o título de barra de navegação aumentado para quase todos os aplicativos do sistema (ele começou a fazer isso no iOS 10 e no aplicativo Música). Eu estou querendo saber se a Apple tem uma API pública para isso no iOS 11, ou se ela permanecerá privada por enquanto.

O comportamento é que o título tem um tamanho de fonte aumentado, é alinhado à esquerda e será movido para a barra de navegação quando o usuário rolar para baixo. Anexei algumas telas mostrando esse comportamento no aplicativo Mensagens aqui:

Embora não tenha encontrado nenhuma referência no UINavigationController e no UINavigationBar até agora, talvez alguém saiba mais alguns detalhes!


Basta verificar o "Prefere Grandes Títulos" no inspetor de atributos da Barra de Navegação


UINavigationBar tem uma propriedade prefersLargeTitles: Bool . Docs aqui .

class UINavigationBar {
   var prefersLargeTitles: Bool
}

UINavigationItem tem uma propriedade largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode . Docs aqui .

class UINavigationItem {
   var largeTitleDisplayMode: LargeTitleDisplayMode
}

Ambos podem ser modificados no Construtor de Interface.

Para ativar esse comportamento, configure navigationController.navigationBar.prefersLargeTitles como true . Em seguida, você pode controlar cada controlador de visualização individual na pilha do controlador de navigationItem.largeTitleDisplayMode definindo navigationItem.largeTitleDisplayMode .

As diretrizes gerais de design da Apple são que títulos grandes não devem ser usados ​​em todos os lugares (por exemplo, o aplicativo Clock não os usa), e geralmente é preferível que somente o primeiro nível do controlador de navegação use os títulos grandes. No entanto, estas são apenas diretrizes gerais.

Grandes títulos são introduzidos no vídeo O que há de novo no Cocoa Touch (7:37).


if #available(iOS 11.0, *) {
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationItem.largeTitleDisplayMode = .always
} else {
    // Fallback on earlier versions
}

Observe que há alguns bugs no beta 1 que fazem com que o título grande apareça somente quando você rola manualmente para cima.







ios11