Cocoa:设置Mac窗口全屏后视图未自适应调整大小
解决Mac窗口全屏时视图未跟随全屏的问题
嘿,我来帮你搞定这个问题!你已经设置了窗口的全屏行为,但视图没跟着全屏,大概率是视图的布局约束没配置到位,导致窗口尺寸变化时视图没有自动拉伸填充整个窗口。下面是具体的解决步骤:
检查自动布局约束,让视图填充整个窗口内容区
不管你是用Storyboard/Xib还是纯代码创建视图,核心都是让你的主视图和窗口的contentView四边完全绑定:- 如果是用可视化界面:选中你的主视图,按住
Control拖到父视图(窗口的contentView),选择"Leading to Safe Area Leading"、"Trailing to Safe Area Trailing"、"Top to Safe Area Top"、"Bottom to Safe Area Bottom"这四个约束,确保约束优先级都是Required(默认就是)。 - 如果是纯代码实现,可以在
windowDidLoad里添加约束:override func windowDidLoad() { super.windowDidLoad() window?.titleVisibility = .hidden window?.collectionBehavior = [.fullScreenPrimary] guard let contentView = window?.contentView, let mainView = contentViewController?.view else { return } // 关闭自动转换为 autoresizing mask,否则约束不生效 mainView.translatesAutoresizingMaskIntoConstraints = false // 添加四边约束 NSLayoutConstraint.activate([ mainView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), mainView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), mainView.topAnchor.constraint(equalTo: contentView.topAnchor), mainView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) ]) }
- 如果是用可视化界面:选中你的主视图,按住
确认contentViewController已正确关联
如果是用Storyboard,检查你的Window Controller的"Content View Controller"出口有没有正确指向你的ViewController;如果是代码创建窗口,记得给window?.contentViewController赋值对应的ViewController实例,不然窗口的内容区会是空的,视图自然无法填充。确保窗口支持尺寸调整
虽然默认窗口的styleMask已经包含.resizable,但如果之前被修改过,可以手动加上:window?.styleMask.insert(.resizable)
做完这些操作后,窗口进入全屏时,你的视图就会自动拉伸填充整个屏幕了。
内容的提问来源于stack exchange,提问作者user2924482
相关产品推荐
相关产品推荐

