Вы устанавливаете view.autoresizesSubviews
на true
, что говорит view
изменить размер каждого из его подпредставлений. Но вы также должны указать, как вы хотите изменить размер каждого подпредставления. Вы делаете это, устанавливая подпредставление autoresizingMask
. Так как вы хотите, чтобы frame
подпредставления продолжал соответствовать bounds
суперпредставления, вы хотите, чтобы width
и height
подпредставления были гибкими, и вы хотели, чтобы его поля X и Y были фиксированными (в нуле). Таким образом:
override func viewDidAppear() {
self.view.needsDisplay = true
let newView = NSView()
// The following line had no effect on the layout of newView in view,
// so I have commented it out.
// newView.autoresizesSubviews = true
newView.frame = view.bounds
// The following line tells view to resize newView so that newView.frame
// stays equal to view.bounds.
newView.autoresizingMask = [.width, .height]
newView.wantsLayer = true
newView.layer?.backgroundColor = NSColor.green.cgColor
view.addSubview(newView)
}