我要将SpriteKit应用程序从iOS移植到MacOS。我正在main.storyboard中设计主菜单,并且有一个图像作为背景。但是,当我调整窗口大小时,我的图像无法填满整个屏幕。
我尝试过:
.scaleAxesIndependently //???
.scaleNone //Centre
.scaleProportionallyDown //???
.scaleProportionallyUpOrDown //AspectFit
,但与.aspectFill
相同。
我正在使用swift
答案 0 :(得分:1)
子类化NSImageView
并覆盖intrinsicContentSize
,您将能够调整图像保持宽高比的大小,如下所示:
class AspectFillImageView: NSImageView {
override var intrinsicContentSize: CGSize {
guard let img = self.image else { return .zero }
let viewWidth = self.frame.size.width
let ratio = viewWidth / img.size.width
return CGSize(width: viewWidth, height: img.size.height * ratio)
}
}
如果您只想填充整个视图而忽略该比例,请改用以下扩展名:
extension NSImage {
func resize(to size: NSSize) -> NSImage {
return NSImage(size: size, flipped: false, drawingHandler: {
self.draw(in: $0)
return true
})
}
}
扩展用法:
NSImage.resize(to: self.view.frame.size)