macOS-如何解决这个可爱的AutoLayout问题?

时间:2019-06-26 19:13:53

标签: macos cocoa nsautolayout nsstackview

我有一个加载外部XIB的自定义视图。

此XIB的设计如下:具有3个<system.net> <mailSettings> <smtp deliveryMethod="Network" from="xxxxxx@mail.com"> <network host="smtp.xxxxx.com" userName="xxxxxx@mail.com" password="******" port="25" enableSsl="true" /> </smtp> </mailSettings> 的垂直堆栈视图。

enter image description here

我有以下限制条件:

  1. 堆栈(要进行超级视图的centerX,centerY,equalWidth和equalHeigh)
  2. 文本字段(等于堆栈的宽度)

在情节提要中,我创建以下结构:

enter image description here

包含3个水平堆栈的垂直堆栈。

赞:

enter image description here

这些正方形中的每个正方形都是从XIB加载的视图之一。

我对主堆栈有以下限制:

  • 等于观看的高度
  • 要观看的顶部空间= 0
  • 领先的超级观看空间= 0
  • 2:3宽高比本身

我在课堂上有这段代码,用于加载XIB

func loadViewFromNib(){

NSTextFields

}

如果我只是运行应用程序,它将呈现如下:

enter image description here

如果我尝试通过在var topLevelArray : NSArray? let bundle = Bundle(for: type(of: self)) let nib = NSNib(nibNamed: .init(String(describing: type(of: self))), bundle: bundle)! nib.instantiate(withOwner: self, topLevelObjects: &topLevelArray) let myView = topLevelArray?.first(where: { $0 is NSView }) as? NSView self.view = myView! self.addSubview(myView!) 的末尾添加这些行来居中,

loadViewFromNib

我明白了:

enter image description here

myView!.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true myView!.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true 是XIB的超级视图。在那里包含3个文本视图的堆栈。

有什么想法吗?

0 个答案:

没有答案