Pergunta

Estou começando a desenvolver meu primeiro aplicativo de cacau completo contendo uma visão que eu gostaria de me comportar (e procurar) semelhante ao do Automator AMWorkflowView.

Os recursos básicos que eu gostaria de alcançar:

  • Posicionamento de subviews
  • Exibição de subviews em estados expandidos / colapsados
  • Seleção múltipla
  • Arraste e solte

Para me acostumar com o cacau, comecei com um costume NSView que serviu principalmente como contêiner para as subviews personalizadas e lidou com seu posicionamento e seleção múltipla. As subviews também são subclasses de NSView, e contém uma quantidade variável de visualizações, como botões, rótulos e menus pop -up e, portanto, pode ter alturas diferentes. Isso funcionou muito bem, mas antes de prosseguir, quero ter certeza de ter tudo arrumado e arrumado de acordo com o padrão MVC.

Eu suspeito que já existe uma aula em cacau que facilita a implementação de um contêiner de visualização, como talvez NSCollectionView. Parece que não existe uma maneira (fácil) para exibir visualizações de tamanho diferente em um NSCollectionView, no entanto. Devo continuar implementando meu costume NSView (provavelmente usando um NSArrayController para seleção e suporte de classificação), ou existem maneiras melhores de percorrer?

Qualquer ajuda é muito apreciada

Foi útil?

Solução

Infelizmente, a resposta é que você terá que rolar o seu próprio. NSCollectionView não permite itens de tamanho variável (que também descartam estados expandidos/colapsados).

Para um número limitado de itens, você pode realizar isso com bastante facilidade (você só precisa de uma visualização de contêiner que organize as subviews corretamente quando solicitado para fazer o layout, então precisará se certificar de que o rekout quando as coisas mudarem). Para muitas subvisões, no entanto, você precisará tomar cuidado para ser o mais eficiente possível. Isso pode começar com a criação o mínimo possível (apenas aqueles "depois" da visão redimensionada, por exemplo) e se tornarem tão complexos quanto o cache de uma representação visual de uma visão de protótipo, desenhando as imagens em cache (FAST!) Para todos, exceto a visão, exceto a vista sendo editado e apenas usando/posicionando uma visão "real" para a exibição que está sendo editada.

Arrastar e soltar funciona da mesma forma que sempre, mas nenhuma das contas acima da bela animação NSCollectionView da-te. :-) É rápido e lindamente animado com precisão Porque Todas as subvisões são uniformes (portanto, os cálculos de layout são rápidos e simples). Depois de adicionar tamanhos irregulares, o problema se torna significativamente mais complicado.

Conclusão: se você precisar de visualizações de tamanho variável, NSCollectionView Não funcionará e você precisará rolar o seu próprio ou encontrar o código compartilhado de outra pessoa, mas o desempenho e a bela animação não serão fáceis.

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