![](/img/trans.png)
[英]Loading xib file into an custom NSView gets embedded inside another custom NSView
[英]Swift: Resize Embedded Custom NSView
我有一个自定义NSView嵌入在NSScrollView中。
我已将自定义视图设置为使用其他视图控制器。
import Cocoa
class ViewController: NSViewController
{
@IBOutlet weak var clipView: NSClipView!
var vc : NSViewController?
override func viewDidLoad()
{
super.viewDidLoad()
if let storyboard = NSStoryboard(name: "Main",bundle: nil)
{
vc = storyboard.instantiateControllerWithIdentifier("vc") as? NSViewController
clipView.documentView = vc!.view
}
}
}
这一切似乎都可行,但是当我调整外部窗口的大小时,我希望自定义视图中的视图控制器增加。
我已经设置了约束,并且自定义视图也相应增长,但是内容说的宽度相同。
扩展窗口时,自定义框架会更改大小,但其内容不会重新调整大小。 例如,在这种情况下,我希望按钮在视图中保持正确对齐。
如您所见,当窗口扩展时,自定义视图的红色背景会更改大小,但是按钮仍保留在其原始位置。
如何获取内部视图以与外部视图调整大小?
更新:遵循以下建议。 我现在添加了一个NSScrollView,并在所有约束条件下都很好地跟随了调整大小。 当我删除底部约束时,它自身会折叠并在底部对齐:
我想我需要指定一个高度并使视图顶部对齐。 有任何想法吗?
如果在视图本身上设置背景,则可以看到其大小/位置没有变化。
vc.view.wantsLayer = true
vc.view.layer?.backgroundColor = NSColor.blueColor().CGColor
因此,您可以添加约束来告诉它填充整个剪辑视图:
vc.view.translatesAutoresizingMaskIntoConstraints = false
// these are 10.11-only APIs, but you can use the visual format language or any other autolayout APIs
vc.view.leadingAnchor.constraintEqualToAnchor(vc.view.superview!.leadingAnchor).active = true
vc.view.topAnchor.constraintEqualToAnchor(vc.view.superview!.topAnchor).active = true
vc.view.bottomAnchor.constraintEqualToAnchor(vc.view.superview!.bottomAnchor).active = true
vc.view.trailingAnchor.constraintEqualToAnchor(vc.view.superview!.trailingAnchor).active = true
但是然后我会问,为什么要使用滚动视图?
假设外部视图约束更改后,您在按钮中具有正确的约束,则可能要调用view.layoutIfNeeded()或button.layoutIfNeeded()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.