Je recherche la meilleure façon de changer le backgroundColor
fichier NSView
. J'aimerais également pouvoir définir le alpha
masque approprié pour le NSView
. Quelque chose comme:
myView.backgroundColor = [NSColor colorWithCalibratedRed:0.227f
green:0.251f
blue:0.337
alpha:0.8];
Je remarque que NSWindow
cette méthode a cette méthode, et je ne suis pas un grand fan des options d'arrière NSColorWheel
- NSImage
plan, mais si elles sont les meilleures, je suis prêt à les utiliser.
objective-c
macos
background-color
nsview
BadPirate
la source
la source
NSRectFill
utiliseNSCompositeCopy
pour faire le remplissage, donc il écrasera tout ce qui se trouve derrière - il ne composera pas au-dessus des vues ancêtres. Pour les remplissages avec une couleur partiellement (ou entièrement) transparente, utilisezNSRectFillUsingOperation
developer.apple.com/mac/library/documentation/Cocoa/Reference/… avec l'NSCompositeSourceOver
opération.Une solution simple et efficace consiste à configurer la vue pour utiliser une couche Core Animation comme magasin de stockage. Ensuite, vous pouvez utiliser
-[CALayer setBackgroundColor:]
pour définir la couleur d'arrière-plan du calque.C'est tout!
la source
setLayer:
ousetWantsLayer:
interrompre les WebViews que vous pourriez avoir dans votre application de manière très créative! (Même dans différentes fenêtres ...)setWantsLayer:
est définie: Lorsque vous utilisez des vues basées sur des couches, vous ne devez jamais interagir directement avec la couche . L'ordre dans lequelsetWantsLayer:
etsetLayer:
est appelé est pertinent.Si vous êtes un amateur de storyboard, voici un moyen de ne pas avoir besoin de ligne de code .
Ajoutez
NSBox
comme sous-vue à NSView et ajustez le cadre de NSBox comme le même avec NSView.Dans Storyboard ou XIB, changez la position du titre sur Aucun, le type de boîte sur Personnalisé , le Type de bordure sur «Aucun» et la couleur de la bordure sur ce que vous voulez.
Voici une capture d'écran:
Voici le résultat:
la source
Si vous définissez d'abord WantsLayer sur YES, vous pouvez directement manipuler l'arrière-plan du calque.
la source
Je pense avoir trouvé comment le faire:
la source
CGContextFillRect(context, NSRectToCGRect(dirtyRect));
Pouvez-vous modifier votre réponse?J'ai parcouru toutes ces réponses et aucune d'elles n'a fonctionné pour moi, malheureusement. Cependant, j'ai trouvé ce moyen extrêmement simple, après environ une heure de recherche :)
la source
modifier / mettre à jour: Xcode 8.3.1 • Swift 3.1
usage:
la source
Meilleure solution :
la source
Dans Swift:
la source
Utilisez NSBox, qui est une sous-classe de NSView, nous permettant de styliser facilement
Swift 3
la source
Sans aucun doute le moyen le plus simple, également compatible avec les éléments de jeu de couleurs:
Swift :
Objectif-C :
Constructeur d'interface :
Ajoutez un attribut défini par l'utilisateur
backgroundColor
dans le générateur d'interface, de typeNSColor
.la source
J'ai testé ce qui suit et cela a fonctionné pour moi (dans Swift):
la source
Dans Swift 3, vous pouvez créer une extension pour le faire:
la source
Jetez un œil à RMSkinnedView . Vous pouvez définir la couleur d'arrière-plan de NSView à partir d'Interface Builder.
la source
Dans Swift, vous pouvez sous-classer NSView et faire ceci
la source
Juste une petite classe réutilisable (Swift 4.1)
la source
Il suffit de définir
backgroundColor
le calque (après avoir fait reculer le calque de vue).la source
Cela prend en charge la modification de l'apparence du système (activation ou désactivation du mode sombre) pendant l'exécution de l'application. Vous pouvez également définir la couleur d'arrière-plan dans Interface Builder, si vous définissez d'abord la classe de la vue sur BackgroundColorView.
la source