NSImageView setImage legt das Bild nicht fest
-
21-12-2019 - |
Frage
Ich versuche, ein Bild für ein NSImageView-Instanzobjekt in einem Cocoa-Projekt festzulegen.Mein Code sieht so aus:
itemTableCellView * xx = [tableView makeViewWithIdentifier:@"MainCell" owner:self];
xx.label.stringValue = [tempCi simpleTxt];
xx.img = [[NSImageView alloc]initWithFrame:CGRectMake(48, 48, 48, 48)]];
NSImage * localimage = [NSImage imageNamed:@"menubar icon"];
[xx.img setImage:localImage];
return xx;
Die Variable img
ist vom Typ NSImageView.Die Variable localImage
lädt das richtige Bild, ich habe es im Protokoll überprüft.Die Variable lable
wird korrekt initialisiert und erhält den richtigen Wert
Ich bekomme immer wieder leere NSImageViews in meiner App.
Lösung
Dein NSImageView
wird ohne Größe initialisiert (der Frame entspricht NSZeroRect
), außerdem fügen Sie die Bildansicht keiner Unteransicht hinzu.
Andere Tipps
wenn Sie Ihre erstellen NSimageView
Versuchen Sie es mit einem initwithframe:
.Dadurch wird eine Größe für NSImageView festgelegt.Ich glaube, dass Sie sonst möglicherweise ein Rechteck der Größe Null zeichnen würden.
Du solltest benutzen
xx.img = [[NSImageView alloc] initWithFrame:CGRectMake(x, y, width, height)];
Oder vielleicht als img
Ist Eigentum, müssen Sie es überhaupt nicht initiieren?Und einfach verwenden
xx.img.frame=CGRectMake(x, y, width, height);
Nun, noch eine weitere Eigenart von Objective-C!
Ich habe herausgefunden, dass selbst als a NSImageView
ist eine Eigenschaft von an NSView
, es muss hinzugefügt werden durch:
[xx addSubview:xx.img];
Naja, Cocoa gespielt, sehr gut gespielt!
Prost!