Pergunta

Eu tenho um nsview de hospedagem em camada (-isflipped = sim) com três subviews de hospedagem de camadas. As subvisões são um cabeçalho, uma área de conteúdo e um rodapé. O cabeçalho possui um triângulo de divulgação que desmoronará a visualização de conteúdo e apenas mostrará o cabeçalho e o rodapé presos.

Eu posso realizar isso com bastante facilidade com a animação central, mas há um problema estranho acontecendo quando redimenso a visão. Se eu redimensionar a visualização horizontalmente, quero que as três subviews correspondam à nova largura. Se eu redimensioná -lo verticalmente, quero que as subviews fiquem onde estão (ou seja, a borda inferior da vista deve ser capaz de se mover sem afetar a posição da subjusta (exceto o corte de claro). O motivo disso é que eu preciso entrar em colapso O tamanho da visualização quando o ContentView está desbotado.

O que está realmente acontecendo é que todas as três subvisões estão sendo empurradas acima da parte superior da vista quando a altura é alterada ... e depois se encaixa no lugar quando a horizontal é alterada. Tem algo a ver com a combinação da visualização e das subviews, porque se as subviews forem colocadas diretamente na janela, elas se comportam corretamente. Além disso, tentei adicionar um botão à exibição e ele se comporta normalmente.

Consegui fazer com que o botão se comportasse mal da mesma maneira, tornando-o apoiado por camada também ... então acho que o apoio da camada tem algo a ver com isso.

É como se as camadas de apoio estivessem presas na visão dos pais à medida que ela redimensiona e sendo empurrada, mesmo que as coordenadas sejam invertidas.

Alguma ideia?

Foi útil?

Solução

As visualizações de hospedagem em camada não devem ter subviews. Veja -(void) SetwantsLayer: Documentação na classe NSView Referência:

http://developer.apple.com/library/mac/#documentation/cocoa/reference/applicationkit/classes/nsview_class/reference/nsview.html%23/pple_ref/instm/nsview/setantslayer:

A visão raiz talvez deva ser uma visualização apoiada em camada em vez de uma camada que hospeda uma?

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