1

我试图在 IKImageView 中显示来自文件 url 的图像,但它只显示一个空框架。我的项目在 Xcode 10.0 上的 Cocoa Swift 4.2 MacOS 中。

我的代码:

class ViewController: NSViewController {

    @IBOutlet weak var imagePreView: IKImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        imagePreView.wantsLayer = true

        imagePreView.setImageWith(URL(fileURLWithPath: "My_file_URL"))
        imagePreView.isHidden = false

    }

    override var representedObject: Any? {
        didSet {
            // Update the view, if already loaded.
        }
    }

}

我做错了什么还是遗漏了什么?我已经搜索了几个小时,但我仍然没有在 Swift 中找到任何关于 IKImageView 的有用信息,或者它们都已经过时了,就像这样

4

1 回答 1

1

扩展上面@Willeke 的评论,这不起作用的原因是该应用程序(默认情况下)是沙盒,并且无法访问磁盘上的随机文件。

如果您遇到这样的问题NSImageIKImageView, 等在尝试从磁盘加载图像时都会静默失败。

如果您尝试使用FileManagerorData(contentsOf: url)然后您将开始看到真正的错误,这是一个权限异常。

关闭沙盒确实可以解决这个问题,但是如果您有兴趣了解如何授予对磁盘上文件的读取权限,我写了一篇关于该主题的详细博客文章:

AppKit 文件权限疑难解答

于 2019-10-24T15:45:18.580 回答