I подклассы NSView, чтобы получить его масштабируемость. Следуя руководству яблок «View Geometry», границы должны растягиваться, чтобы соответствовать рамке. При настройке размера рамки ничего не меняется. Когда я напечатал размер кадра для консоли, я увидел, что setFrameSize делает буквально ничего.Установить масштаб NSView
Итак, здесь мой вопрос: как изменить размер установленного кадра (без установки заданного размера рамки)? (Автоотключение отключено)
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)
}
}
Дело в том, что я хотел бы нарисовать свой контент на полном размере и уменьшить его, поэтому, хотя я имею меньшую рамку и большие границы. Вот почему я, хотя и изменяю фрейм. Любая идея, как это решить? – Jofkos
Уверен - пусть кадр будет тем, чем он будет (опять же, так как представление появляется на экране и, вероятно, контролируется пользователем или окном или что-то в этом роде), но затем установите свои границы так, как вам хочется. Вы можете установить границы, большие, чем кадр, или меньше, чем кадр, чтобы масштабировать содержимое вашего представления вниз или вверх соответственно. – andyvn22
Спасибо, все. Я не знаю, почему я не думал об этом ... – Jofkos