2017-10-19 106 views
0

在我的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)) 

的伎俩。

+0

“但是我只看到一个图像”显然,你们都将它们定位在.zero。我建议你回到一本书并阅读控制流程。 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html#//apple_ref/doc/uid/TP40014097-CH9-ID120 –

+0

请参阅编辑。 (我没有在这里用控制流逻辑挣扎,但是显示/定位视图) –

回答

0

基于埃尔番茄的评论,我换成

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 

该诀窍。