MacOS - 如何以编程方式将图像视图彼此相邻放置?
问题描述:
在我的MacOS应用程序的主视图中,我试图布置一堆图像视图彼此相邻。MacOS - 如何以编程方式将图像视图彼此相邻放置?
我使用的逻辑是,所述第一子视图有其leadingAnchor
组作为主视图的leadingAnchor
,和每一个后续的子视图有其leadingAnchor
组作为前一子视图的trailingAnchor
。
let imgWidth :CGFloat = 100, imgHeight :CGFloat = 100
var leadingAnchor = self.view.leadingAnchor
for /*loop logic*/ {
let img: NSImage = funcToGetImage()
var imgView = NSImageView(frame: NSRect(origin: .zero, size: img.size))
imgView.image = img
self.view.addSubview(imgView)
imgView.widthAnchor.constraint(equalToConstant: imgWidth).isActive = true
imgView.heightAnchor.constraint(equalToConstant: imgHeight).isActive = true
imgView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
leadingAnchor = imgView.trailingAnchor
}
但是,我看到只有一个图像,而不是像我期望的那样彼此相邻放置。
Swift/Xcode/MacOs开发新手。我错过了什么?
编辑:
如果我更换线
var imgView = NSImageView(frame: NSRect(origin: .zero, size: img.size))
imgView.image = img
与
imgView = NSImageView(image: img)
我没有看到任何东西。
EDIT2: 与
var imgView = NSImageView(frame: NSRect(origin: CGPoint(x: x, y: 0), size: img.size))
x += 100
更换
var imgView = NSImageView(frame: NSRect(origin: .zero, size: img.size))
的伎俩。
答
基于埃尔番茄的评论,我换成
var imgView = NSImageView(frame: NSRect(origin: .zero, size: img.size))
与
var imgView = NSImageView(frame: NSRect(origin: CGPoint(x: x, y: 0), size: img.size))
x += 100
该诀窍。
“但是我只看到一个图像”显然,你们都将它们定位在.zero。我建议你回到一本书并阅读控制流程。 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html#//apple_ref/doc/uid/TP40014097-CH9-ID120 –
请参阅编辑。 (我没有在这里用控制流逻辑挣扎,但是显示/定位视图) –