Menu fechado

Arquitetos de Sistemas

iOS 13 UIAlertController – Mudança de cor em attributeMessage e attributeTitle não funciona ,objetivo-c ,uialertcontroller ,nsmutableattributedstring [RESOLVIDO]

Visualizando 0 resposta da discussão
  • Autor
    Posts
    • #82110 Responder
      Anderson Paraibano
      Participante

      RESOLVIDO: Mudança de cor em attributeMessage e attributeTitle no UIAlertController do iOS 13 não funciona

      Introdução

      O UIAlertController é uma classe fundamental na criação de caixas de diálogo em aplicativos iOS. Ele fornece uma maneira fácil de exibir mensagens, solicitar entradas do usuário e tomar decisões com base nas respostas recebidas. No entanto, ao trabalhar com o UIAlertController no iOS 13, muitos desenvolvedores enfrentaram um problema relacionado à mudança de cor nos atributos do título e da mensagem. Neste artigo, exploraremos essa questão em detalhes e forneceremos uma solução para resolvê-la.

      Descrição do problema

      Quando o iOS 13 foi lançado, surgiram relatos de que a mudança de cor nos atributos de título e mensagem do UIAlertController não estava funcionando conforme o esperado. Normalmente, espera-se que seja possível aplicar atributos de texto personalizados, como cor, tamanho da fonte e estilo, usando o NSAttributedString. No entanto, ao tentar fazer isso no iOS 13, as alterações na cor dos atributos não eram refletidas na exibição final do UIAlertController.

      Causa do problema

      A raiz do problema reside no fato de que, no iOS 13, a implementação interna do UIAlertController foi alterada. A partir dessa versão, o UIAlertController usa uma nova classe privada chamada _UIAlertControllerAlertPresentationController para exibir o conteúdo da caixa de diálogo. Essa mudança resultou em um comportamento inesperado na formatação do texto, especificamente quando se trata da alteração de cor nos atributos.

      Solução

      Embora a mudança de cor direta nos atributos do título e da mensagem não funcione como antes, é possível contornar esse problema usando uma abordagem alternativa. Em vez de atribuir um NSAttributedString diretamente ao título e à mensagem do UIAlertController, podemos usar o atributo attributedMessage e attributedTitle do próprio UIAlertController para aplicar a formatação desejada.

      Aqui está um exemplo de código que ilustra como aplicar a mudança de cor nos atributos do título e da mensagem do UIAlertController no iOS 13:

      objective
      Copy code
      // Cria uma instância do UIAlertController
      UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@”Título” message:@”Mensagem” preferredStyle:UIAlertControllerStyleAlert];

      // Cria um atributo para a cor desejada
      NSDictionary *attributes = @{NSForegroundColorAttributeName: [UIColor redColor]};

      // Cria um atributo de texto para o título
      NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:@”Título” attributes:attributes];

      // Cria um atributo de texto para a mensagem
      NSAttributedString *attributedMessage = [[NSAttributedString alloc] initWithString:@”Mensagem” attributes:attributes];

      // Aplica os atributos formatados ao UIAlertController
      [alertController setValue:attributedTitle forKey:@”attributedTitle”];
      [alertController setValue:attributedMessage forKey:@”attributedMessage”];

      // Apresenta o UIAlertController
      [self presentViewController:alertController animated:YES completion:nil];
      Neste exemplo, estamos criando um NSDictionary contendo o atributo NSForegroundColorAttributeName, que define a cor do texto para vermelho. Em seguida, criamos NSAttributedString para o título e a mensagem, aplicando os atributos formatados. Finalmente, usamos o método setValue:forKey: para definir os atributos formatados no UIAlertController e apresentá-lo.

      Conclusão

      Embora a mudança de cor direta nos atributos de título e mensagem do UIAlertController no iOS 13 possa não funcionar como esperado, podemos contornar esse problema usando a abordagem descrita acima. Ao usar os atributos attributedMessage e attributedTitle do UIAlertController, podemos aplicar a formatação desejada, incluindo a mudança de cor. É importante ressaltar que essa solução é baseada em uma classe privada e, portanto, pode não ser suportada em versões futuras do iOS. Portanto, é sempre recomendável acompanhar as atualizações da Apple e revisar a documentação oficial para obter as melhores práticas e soluções atualizadas.

Visualizando 0 resposta da discussão
Responder a: iOS 13 UIAlertController – Mudança de cor em attributeMessage e attributeTitle não funciona ,objetivo-c ,uialertcontroller ,nsmutableattributedstring [RESOLVIDO]
Sua informação:





<a href="" title="" rel="" target=""> <blockquote cite=""> <code> <pre class=""> <em> <strong> <del datetime="" cite=""> <ins datetime="" cite=""> <ul> <ol start=""> <li> <img src="" border="" alt="" height="" width="">

Nova denúncia

Fechar