Saturday 21 October 2017

Edgesforextendedlayout Navigation Bar Colors


Problema Meu aplicativo parece ser definido corretamente, mas não consigo obter o efeito translúcido embaçado que o iOS 7 é famoso. O meu parece opaco. Efeito Desejado Estou tentando obter um efeito de desfocagem mais óbvio, como Apples Trailers app: Translucency Na minha subclasse de UINavigationController, faço a barra de navegação translúcida: Tint Color Na minha subclasse de UIApplicationDelegate, eu definir a cor do matiz da barra de navegação. Descobri que o alfa da cor do matiz não faz diferença. Ou seja, usar um alfa de 0,1 não faria com que a barra se tornasse mais translúcida. Bordas No meu controlador de exibição de conteúdo, eu defino a borda para UIRectEdgeNone para que o top não seja cortado pela barra de navegação. Se eu fosse usar o padrão UIRectEdgeAll. A barra de navegação iria cobrir permanentemente o topo do meu conteúdo. Mesmo se eu fosse viver com essa anormalidade, UIRectEdgeAll ainda não permite o efeito de translucidez. Editar: Experimentando com bordas Ad apontado por rmaddy nos comentários, o problema pode estar com o edgesForAxtendedLayout. Eu encontrei um tutorial abrangente edgeForExtendedLayout e tentou implementá-lo: Não funcionou. Em primeiro lugar, não houve efeito de translucidez. Em segundo lugar, o topo do meu conteúdo foi cortado. Na página de exemplo a seguir com o código acima, o avatar foi inicialmente coberto pela barra de navegação e era muito difícil rolar para. Você poderia puxar para baixo para ver o topo do avatar, mas quando você deixar ir, a página automaticamente saltar de volta eo avatar seria obscurecido novamente. Pediu Nov 14 13 em 1:19 rmaddy. A captura de tela veio no iPhone 5 com iOS 7.0.3 com o sistema quotreduce animationquot configuração desativada. Usar o padrão UIRectEdgeAll faz com que a parte superior e inferior da exibição de conteúdo fique preso nas barras de navegação e guia, como aprendi com esse segmento. Eu tentei o padrão UIRectEdgeAll e não faz diferença nos efeitos especiais. Ndash Pwner Nov 14 13 at 1:51 2 Respostas O problema foi causado pelo terceiro-puxar para baixo para atualizar exibição EGORefreshTableHeaderView. Que foi popularmente usado antes iOS 6 introduziu o sistema de controle de atualização. Essa visão confunde o iOS 7, fazendo-o pensar que o conteúdo é mais alto do que realmente é. Para iOS 6 e 7, Ive condicionalmente comutado para usar UIRefreshControl. Agora a barra de navegação não cortará meu conteúdo. Eu posso usar UIRectEdgeAll para fazer meu conteúdo ir debaixo da barra de navegação. Finalmente, tato minha barra de navegação com um alfa menor para obter o efeito de translucidez. Como muitos de vocês, estive muito ocupado atualizando meus aplicativos para torná-los adequados para o iOS 7. A versão mais recente do iOS introduz muitas mudanças visuais. Do ponto de vista de um desenvolvedor, a barra de navegação ea barra de status são duas mudanças visíveis que precisam ser atendidas. A barra de status agora é transparente, o que significa que a barra de navegação por trás mostra. Em alguns casos, a imagem de plano de fundo para uma barra de navegação pode estender-se atrás da barra de status. Algum tempo atrás, I8217ve escreveu um tutorial sobre como personalizar uma barra de navegação. Acho que é hora de revisitar a personalização e ver como é feito no iOS 7. Aqui estão algumas das dicas e truques que você encontrará neste artigo: Definindo a cor de fundo da barra de navegação Usando a imagem de fundo na barra de navegação Personalizando a cor de Voltar Alterar a fonte do título da barra de navegação Adicionar itens de botão de barra múltipla Alterar o estilo da barra de estado Ocultar a barra de estado You8217ll precisa Xcode 5 para executar correctamente o código tal como apresentado neste tutorial. Portanto, se você ainda estiver usando versões mais antigas do Xcode, certifique-se de atualizar para o Xcode 5 antes de executar o projeto Xcode de amostra. Barra de Navegação Padrão no iOS 7 Antes de entrar na personalização, let8217s primeiro dê uma olhada na barra de navegação padrão gerada pelo Xcode 5 e iOS 7. Basta criar um projeto Xcode usando o modelo Single View Controller. Incorporar o controlador de vista num controlador de navegação. Se você não quiser começar do zero, você pode baixar este projeto Xcode exemplo. O Xcode 5 agrupa os simuladores iOS 6 e iOS 7. Tente executar o projeto de exemplo usando ambas as versões do Simulators. Como você pode ver, a barra de navegação no iOS 7 está por padrão entrelaçada com a barra de status. A cor padrão também é alterada para cinza claro, também. Alterando a cor de fundo da barra de navegação No iOS 7, a propriedade tintColor não é mais usada para definir a cor da barra. Em vez disso, use a propriedade barTintColor para alterar a cor de plano de fundo. Você pode inserir o código abaixo no didFinishLaunchingWithOptions: de AppDelegate. m. Por padrão, a propriedade translúcida da barra de navegação está definida como YES. Além disso, há um borrão de sistema aplicado a todas as barras de navegação. Sob essa configuração, o iOS 7 tende a desaturatar a cor da barra. Aqui estão as barras de navegação de exemplo com diferentes configurações translúcidas. Para desativar a propriedade translúcida, basta selecionar a barra de navegação no Storyboard. Em Controladores de atributos, desmarque a caixa de verificação translúcida. Usando a Imagem de Fundo na Barra de Navegação Se seu aplicativo usa uma imagem personalizada como o plano de fundo da barra, você precisa fornecer uma imagem 8220taller8221 para que ela se estenda para trás da barra de status. A altura da barra de navegação é alterada de 44 pontos (88 pixels) para 64 pontos (128 pixels). Você ainda pode usar o método setBackgroundImage: para atribuir uma imagem personalizada para a barra de navegação. Aqui está a linha de código para definir a imagem de fundo: UINavigationBar aparência setBackgroundImage. UIImage imageNamed. Navbg. png forBarMetrics: UIBarMetricsDefault O projeto Xcode de exemplo agrupa duas imagens de plano de fundo diferentes: navbg. png e navbgios7.png. Tente testá-los. Alterando a fonte do título da barra de navegação Assim como o iOS 6, você pode personalizar o estilo de texto usando as propriedades 8220titleTextAttributes8221 da barra de navegação. Você pode especificar a fonte, a cor do texto, a cor da sombra do texto eo deslocamento da sombra do texto para o título no dicionário de atributos de texto, usando as seguintes chaves de atributo de texto: UITextAttributeFont Chave à fonte UITextAttributeTextColor Chave à cor do texto UITextAttributeTextShadowColor Chave à sombra de texto Color UITextAttributeTextShadowOffset Chave para o deslocamento usado para a sombra de texto Aqui estão os snippets de código de exemplo para alterar o estilo de fonte do título da barra de navegação: Aqui está o resultado da amostra: Alterando o Estilo da Barra de Status Em versões mais antigas do iOS, a barra de status foi Sempre no estilo preto e não há muito que você pode mudar. Com o lançamento do iOS 7, você pode alterar a aparência da barra de status por controlador de visão. Você pode usar uma constante UIStatusBarStyle para especificar se o conteúdo da barra de status deve ser escuro ou conteúdo de luz. Por padrão, a barra de status exibe conteúdo escuro. Em outras palavras, itens como tempo, indicador de bateria e sinal Wi-Fi são exibidos em cores escuras. Se você estiver usando um fundo escuro na barra de navegação, você acabará com algo parecido com isto: Neste caso, você provavelmente precisará alterar o estilo da barra de status de escuro para claro. Há duas maneiras de fazer isso. No iOS 7, você pode controlar o estilo da barra de status de um controlador de exibição individual, substituindo o preferredStatusBarStyle: Para o aplicativo de exemplo, basta colocar o código acima no RecipeNavigationController. m ea barra de status exibirá conteúdo de luz. O método introduzido acima é a maneira preferida para alterar o estilo de barra de status no iOS 7. Alternativamente, você pode definir o estilo de barra de status usando o método statusBarStyle UIApplication. Mas primeiro você precisa excluir a aparência da barra de status baseada no controlador 8220View8221. Na guia Info do destino do projeto, insira uma nova chave denominada 8220View barra de status baseada em controlador appearance8221 e defina o valor como NO. Ao desabilitar a aparência da barra de status baseada no controlador 8220View8221, você pode definir o estilo da barra de status usando o seguinte código: UIApplication sharedApplication setStatusBarStyle: UIStatusBarStyleLightContent Ocultando a barra de status Em qualquer caso, você deseja ocultar a barra de status, No seu controlador: NavigationRender Issue I arquivou outro relatório de bug (bugzilla. xamarin / showbug. cgiid24500) para o problema original. Este erro pode fazer o que você está tentando fazer difícil, mas depende do que exatamente você precisa. Se você quiser que a cor esteja correta, então você pode definir a cor de fundo do NavigationPage para ser o mesmo que as páginas que você está empurrando para ele. O conteúdo das páginas ainda será iniciado abaixo da barra de navegação, mas como a cor de fundo da página corresponde à cor de fundo da página de navegação propriamente dita, ela ficará correta. Veja a captura de tela anexada. A parte mais difícil é se você deseja que o conteúdo rolar (verticalmente) e mover-se debaixo da barra de navegação como rola (FWIW, se é isso que você está tentando fazer, da próxima vez que você deve realmente mencionado que desde o início). Nesse caso, você precisa da exibição de rolagem para preencher a tela e ter seu ContentInset. Top definido para a altura da barra de navegação mais a altura da barra de status. Isso geralmente pode ser feito automaticamente definindo AutomaticallyAdjustsScrollViewInsets como true no controlador de exibição. No entanto, isso não funcionaria com o estado atual de Xamarin. Forms por causa do bug que eu liguei acima. O NavigationRenderer está a tornar a sua vista demasiado curta para que ele não pode preencher a tela. Ive pensou sobre isso um pouco, mas até agora eu não posso vir acima com uma maneira de contornar esse bug. IOS Simulator Screen Shot 13 de novembro de 2014, 1.12.45 PM. png Quaisquer atualizações sobre esta questão Estou tendo exatamente o mesmo problema - basicamente definir a visão de navegação translúcido doesnt trabalho ou bagunçar as coisas. Acho que o bug se perdeu porque foi deixado no estado NEEDINFO. Eu empurrei de volta para o estado CONFIRMADO. Estou enfrentando o mesmo problema, qualquer pessoa que resolveu o problema ainda usando custom renderer alterar a propriedade de área de conter Trabalhou. Obrigado tanto Dheeraj Singh Este é apenas ouro com o prazo entrante Eu quero comprar-lhe uma cerveja Eu quero comprar-lhe uma cerveja Eu gostei da versão original (typo) deste (capturado em notificações do email): Eu quero comprá-lo A be ar eu não consigo entender o que mudou, mas no mais recente Xamarin. Forms 2.3.1.114, não consigo recuperar a propriedade ContainerArea mais (seu sempre nulo). Qualquer pensamento sobre este Mesmo para mim. Propriedade é sempre nulo. Ainda tem um espaço em branco na parte inferior da página. Tente com o código abaixo. Classe pública NavigationPageRenderer. NavigationRenderer Obrigado DheerajSingh, ele funciona perfeitamente com o seu último snippet de código

No comments:

Post a Comment