2

Comment rendre l'arrière-plan d'un IKImageBrowserView transparent? Il semble n'y avoir aucune option de couleur d'arrière-plan dans le constructeur de l'interface.Cocoa: Comment rendre l'arrière-plan d'un IKImageBrowserView transparent?

Ce que j'ai essayé:

Je ne l'ai jamais utilisé Core Animation, mais j'ai vu IKImageBrowserView a une méthode setBackgroundLayer, donc j'ai essayé ce qui suit, qui n'a eu aucun effet:

CALayer* layer = [CALayer layer]; 
[layer setFrame: NSMakeRect(0, 0, 1000, 1000)]; 
[layer setBackgroundColor: CGColorCreateGenericRGB(0.0f, 0.0f, 0.0f, 0.0f)]; 
[browser setBackgroundLayer: layer]; 

Voilà la référence de classe pour IKImageBrowserView.

+0

CALayer n'a pas de méthode setBackgroundColor (le compilateur aurait dû vous le dire). http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html – peelman

+0

peelman: Oui, c'est le cas. Il a une propriété 'backgroundColor', ce qui signifie qu'il a un getter' backgroundColor' et (puisque la propriété est readwrite) un setter 'setBackgroundColor:'. Souvenez-vous que l'accès aux propriétés (par exemple 'layer.backgroundColor = ...') est exactement équivalent à -c'est-à-dire qu'il génère le même code qu'une expression de message (par exemple '[layer setBackgroundColor: ...]' de la question). En outre, ceci est une question de Mac; méfiez-vous des différences API entre Cocoa et Cocoa Touch. –

+0

Max: Vous avez également divulgué cet objet CGColor. Core Graphics suit les règles de gestion de la mémoire de Core Foundation: http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/ –

Répondre

6

Codage de valeur de clé. Voir: IKImageBrowserView's View Options Section

[_imageBrowser setValue:[NSColor colorWithDeviceRed:0.0 green:0.0 blue:0.0 alpha:0.0] forKey:IKImageBrowserBackgroundColorKey]; 

Source.

+0

Parfait, merci! J'ai appelé cela dans awakeFromNib depuis le contrôleur de mon IKImageBrowserView et cela a fonctionné. – Max

+0

Pendant que * fonctionne *, si vous définissez la couleur d'arrière-plan sur une couleur transparente, imageBrowserView ne dessine plus de surbrillance de sélection autour des images sélectionnées, quelle que soit la couleur définie pour la valeur IKImageBrowserSelectionColorKey. D'après ce que je peux trouver, un fond transparent élimine la possibilité de surlignements de sélection. – Bryan