Ich entwickle ein Programm, in dem ich NSAmageView programmatisch zu einer benutzerdefinierten NSView-Klasse hinzufüge. Beim Erstellen der Bildansicht übergebe ich den Rahmen des übergeordneten Containers.So richten Sie eine Unteransicht an die Mitte eines übergeordneten Elements aus NSView
-(NSImageView *)loadNSImage:(NSString *)imageName frame:(NSRect)frame{
imageName = [[NSBundle mainBundle] pathForResource:imageName ofType:@"png"];
NSImage *image = [[NSImage alloc] initWithContentsOfFile:imageName];
NSImageView *imageView = [[NSImageView alloc]initWithFrame:frame];
[imageView setImage:image];
[imageView setImageScaling:NSImageScaleProportionallyUpOrDown];
[imageView setAutoresizingMask:NSViewHeightSizable | NSViewWidthSizable | NSViewMaxXMargin | NSViewMaxYMargin | NSViewMinXMargin | NSViewMinYMargin];
[imageView setImageAlignment:NSImageAlignCenter];
[image release];
return imageView;
}
Dann verwende ich die addSubView
Methode, dies in der benutzerdefinierten Ansicht hinzuzufügen. Das Problem ist, dass das Bild links unten in der Elternansicht angezeigt wird. Wie kann ich dieses Bild in der Mitte der Elternansicht platzieren?
Ich habe versucht, einen Offset zum Frame-Ursprung hinzuzufügen, aber das funktioniert nicht wirklich, wenn das Fenster in der Größe geändert wird, oder wenn ein Bild mit einer anderen Größe geladen wird.
Jede Hilfe wäre willkommen.
Sie auch alle Division Ergebnisse auf ganze Zahlen runden mögen, als ob es ungerade ist und Sie mit 0,5 am Ende, wird es mit Subpixel-Positionierung unscharf sein. – Jaanus
Ja, das ist definitiv wahr. – d11wtq
Große Antwort, danke –