Ich unterteile NSView, um es skalierbar zu bekommen. Nach Apples 'View Geometry' Leitfaden sollten die Grenzen strecken, um den Rahmen zu passen. Beim Einstellen der Bildgröße ändert sich nichts. Als ich die Bildgröße zur Konsole ausgedruckt habe, habe ich gesehen, dass setFrameSize buchstäblich nichts tut.Skalieren von NSView
Also hier meine Frage: Wie kann ich die eingestellte Bildgröße ändern (ohne die eingestellte Größe zu setzen)? (Autolayout deaktiviert)
class ScaledView : NSView {
let scale: CGFloat
let element: Drawable
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") // not needed, adding it programmatically
}
init(frame frameRect: NSRect, scale: CGFloat, toDraw element: DoubleValue) {
self.scale = scale
self.element = element;
super.init(frame: frameRect)
self.setFrameSize(CGSize(width: self.bounds.size.width * scale, height: self.bounds.size.height * scale))
}
override func drawRect(dirtyRect: NSRect) {
element.draw(dirtyRect, parent: self)
}
}
Die Sache ist, ich möchte meinen Inhalt auf voller Größe zeichnen und verkleinern, so dass ich von einem kleineren Rahmen und größeren Grenzen habe. Deshalb ändere ich den Rahmen. Irgendeine Idee, wie man das löst? – Jofkos
Sicher - lass den Rahmen so sein, wie er sein wird (wieder, so sieht die Ansicht auf dem Bildschirm aus und wird wahrscheinlich vom Benutzer oder vom Fenster oder etwas gesteuert), dann setze deine Grenzen auf das, was du willst. Sie können die Grenzen größer als der Rahmen oder kleiner als der Rahmen festlegen, um den Inhalt Ihrer Ansicht nach oben bzw. unten zu skalieren. – andyvn22
Danke, das war es. Ich weiß nicht, warum ich nicht daran gedacht hatte ... – Jofkos