J'ai une sous-classe de vue personnalisée similaire à NSBox
qui dessine un arrière-plan arrondi. Le problème est que si je place une vue comme un NSTableView
dans la vue de boîte, elle ne se clipse pas aux coins arrondis. Est-il possible de contourner les coins de NSTableView
et sa vue de défilement parent?Coins arrondis sur NSTableView
Répondre
Je n'ai pas essayé ceci avec une vue de table mais ai avec d'autres contrôles.
Dans une sous-classe de NSTableView (ou autre vue/contrôle que vous voulez couper)
- Override
drawRect:
- Créer un NSBezierPath avec la forme que vous voulez (probablement
appendBezierPathWithRoundedRect:xRadius:yRadius:
n'oubliez pas d'utiliser les limites de la vue comme la taille) - Envoyez le chemin le message
addClip
ajouter cette forme au chemin de découpage de la vue drawRect:
de super appel
Si la vue de table comporte un en-tête, vous devrez peut-être découper les coins supérieurs en sous-classant NSTableHeaderView. Et si vous avez des barres de défilement, il se peut que vous deviez faire la même chose, sauf pour certains coins. J'espère que vous n'avez pas de barres de défilement parce que je doute que cela semble correct. Fondamentalement, vous voulez découper la vue/le contrôle qui dessine cette partie, l'écrêtage du parent ne provoquera pas l'écrêtage des sous-vues. Si vous regardez la fenêtre Bienvenue dans Xcode d'Apple, ils s'en tirent en dessinant un en-tête personnalisé en haut et un bloc de texte en bas pour ne pas avoir à arrondir la vue de la table elle-même. Si vous pouvez faire quelque chose comme ça, je le ferais.
Merci, j'ai fini par repenser mon design pour ne pas avoir à le faire. – indragie
@indragie qu'avez-vous fini par faire? –