Programação para iPhone: aplicando alfa aos pais, mas não às visões infantis

StackOverflow https://stackoverflow.com/questions/1582006

  •  21-09-2019
  •  | 
  •  

Pergunta

É possível definir alfa para 0,75 ou 0,50 (transparente) para visualização dos pais, mas as visualizações/controles da criança são opacos (canal alfa 1.0 - completamente visível).

Sempre que defino alfa do meu UIView principal como transparente, todas as visualizações/controles da criança também são mostradas como transparentes. Existe alguma solução alternativa?

Foi útil?

Solução

Os pais que agem como seu histórico devem ser alterados para um irmão diante do contêiner que envolve seus filhos. Dessa forma, você pode definir a transparência sem afetar toda a hierarquia.

Isso seria assim.

  • <item-container>
    • <item-background>
    • <children-container>
      • <children/>

Essa hierarquia teria a mesma ordem de visibilidade e permitia que você defina a opacidade independentemente do conteúdo do recipiente infantil.

Outras dicas

Uma maneira mais simples também é possível sem tornar os irmãos de visualizações. Não defina o alfa diretamente na visualização pai. Em vez disso, use

[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];

Agora, qualquer visão da criança pode ter sua própria cor e não será transparente.

Em Swift, isso seria

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)

Eu sei que essa é uma resposta tardia, e algo já foi aceito, mas encontrei a melhor solução para mim não é definir o UIViewA transparência diretamente, mas, em vez disso, define sua cor de fundo para 0,0,0,0, tornando a cor totalmente transparente.

Não 100% de certeza do que você está tentando fazer, mas se você quiser ter uma visualização de contêiner com um plano de fundo transparente, pode fazê -lo definindo a propriedade BackgroundColor como [Uicolor ClearColor]. Dessa forma, você pode ver através do plano de fundo, mas todas as subviews permanecerão opacas. Se você deseja que o fundo seja semi-transparente, basta usar [Uicolor ColorWithred: Green: Blue: Alpha:].

Se você deseja que toda a visão seja semi-transparente, enquanto outras visualizações não serão, você terá que torná-las irmãos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top