Swift4 Storyboard下NSImageView无法显示jpg图片问题求助
修复方案
问题核心原因
- 初始化
NSImageView时没有设置尺寸,默认frame为NSZeroRect,没有可视渲染区域 - 未添加自动布局约束,imageView不会随contentView调整展示范围
- 直接强制解包
NSImage存在崩溃风险,建议补充安全校验
修正后代码
// 初始化imageView时指定初始尺寸,和窗口大小保持一致 let imageView = NSImageView(frame: NSRect(x: 0, y: 0, width: 800, height: 800)) // 增加图片加载安全校验 guard let image = NSImage(named: NSImage.Name("PageAide")) else { print("图片加载失败,请检查资源名称是否正确") return } imageView.image = image // 开启自动布局 imageView.translatesAutoresizingMaskIntoConstraints = false let window = NSWindow() window.styleMask = NSWindow.StyleMask(rawValue: 0xf) window.setFrame(NSRect(x: 200, y: 200, width: 800, height: 800), display: false) guard let contentView = window.contentView else { return } contentView.addSubview(imageView) // 给imageView添加四边约束,绑定到contentView NSLayoutConstraint.activate([ imageView.topAnchor.constraint(equalTo: contentView.topAnchor), imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), imageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) ]) let controller = NSWindowController(window: window) controller.showWindow(self)
补充说明
如果还是加载失败,可以先在guard let image的else分支打断点排查资源问题:确认xcassets里图片的名称大小写完全匹配(macOS下资源名是大小写敏感的),图片确实被添加到当前target的编译资源列表中。
内容的提问来源于stack exchange,提问作者Fredo
相关产品推荐
相关产品推荐

