Customisation background - les contrôles par dessus sont moches...

LeChatNoirLeChatNoir Membre, Modérateur
09:57 modifié dans API AppKit #1
Slt,
J'ai une custom view qui trace un background bleu ciel.
Dedans, j'y met un NSComboBox et un "Disclosure" bouton.

C'est bien, ça marche mais ...
quand je cliques sur le bouton, il y a un cadre noir qui apparait le temps que le triangle change d'état.
quand je cliques dans la combo, elle est entourée d'un cadre noir horrible.

Est ce à  dire qu'il faut pas changer le background ?
Faut il sous classer tous les contrôles et trouver les méthodes qui vont bien (privée j'imagine) pour régler le pb ?

Merci !

Réponses

  • cargocargo Membre
    mars 2006 modifié #2
    une idée peut-être : dans IB>Layout >> Send to back pour la custom view et Bring to front pour les contrôles.
    une autre idée : tu n'as pas coché des backgrounds pour tes contrôles à  tout hasard...
  • BruBru Membre
    09:57 modifié #3
    Pour compléter ce que dit Cargo :
    j'espère que quand tu dis que tu as mis tes contrôles dans ta custom-view, ce n'est pas "par dessus", mais bien à  l'intérieur en tant que subview...

    Car la gestion des chevauchements de views de même niveau n'est pas géré par le système graphique, ce qui amène à  l'affichage de bizzareries.

    .
  • LeChatNoirLeChatNoir Membre, Modérateur
    09:57 modifié #4
    Oui, c'est bien dedans. Quand j'affiche la vue hiérarchique dans l'inspecteur d'objets d'IB, je vois bien ma custom view puis mes objets comme fils de celle ci.

    Je regarde pour l'histoire du send back et send front + background des objets.

    Merci et a+ !
  • LeChatNoirLeChatNoir Membre, Modérateur
    09:57 modifié #5
    Salut,

    Bon j'ai un peu avancé dans mon histoire.

    J'ai refait un projet de zéro et voilà  mes découvertes sur le disclosure button (ben oui, j'essaye de partager mes découvertes parce que je pose souvent des questions...) :
    * une fenêtre toute simple dont on change la couleur de background ne pose pas de pb. Le disclosure button s'affiche correctement, sans artefact,
    * une vue customisée dans laquelle on fait un NSRectFill avec une couleur perso ne pose pas de pb non plus,
    * une vue customisée dans laquelle, on fait un dégradé pose pb. Quna don clique sur le diclosure button, le draw rect de la vue encapsulant le bouton est appelé avec un "rect" égal à  la frame du disclosure button.

    Il en résulte l'apparition d'un carré autour de la flèche car le dégradé n'est pas sur la même "longueur d'onde" que le dégradé de la vue encapsulante.

    La seule solution que j'ai trouvée, qui est couteuse, est de comparer, dans le drawRect, lla valeur de rect.size et celle de [self frame].size et si c'est différent, rect=[frame bounds].
    Ca marche bien.
    Remarquez, je pourrai tjs utiliser [rect bounds] sans me poser de questions...

    Voilà , c'était ma petit contribution du jour  ::)

    a+

  • 09:57 modifié #6
    dans 1141737205:

    J'ai refait un projet de zéro et voilà  mes découvertes sur le disclosure button (ben oui, j'essaye de partager mes découvertes parce que je pose souvent des questions...) :


    C'est apprécié ;)
Connectez-vous ou Inscrivez-vous pour répondre.