如何解决“无法分配类型'UIImageView的值?' 输入'UIImage?'“问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (5)

免责声明:我已修改/正在修改我的导师从互联网上下载的项目。

这是我的作业项目:屏幕上有3个幸运饼干,用户点击“找出我的财富”按钮,随机选择三个饼干中的一个(使用该.randomElement()属性)。将打开一个窗口,显示随机cookie图像。但是,我无法将窗口中的图像设置为.randomElement()属性的结果

我已经尝试过将UIImage转换为UIImageView,反之亦然,但现在我的智慧结束了。

这是正在形成的随机元素的全局类

class globalElements {
    static let cookiesArray = [globalElements.numberOne,        
        globalElements.numberTwo, globalElements.numberThree]
    static let randomlyAssignedCookie = cookiesArray.randomElement()

}


//And here is where the title error shows up:


let randomlyChosenFortune: UIImageView = {
    let image = UIImageView()
    image.translatesAutoresizingMaskIntoConstraints = false
    image.clipsToBounds = true
    image.contentMode = .scaleAspectFit
    image.image = globalElements.randomlyAssignedCookie //(error: Cannot assign value of type 'UIImageView?' to type 'UIImage?')//

    return image
}()
提问于
用户回答回答于

您正在尝试为该UIImageView类型指定一个UIImage。这是两件不同的事情。对于初学者,我会在分配randomlyChosenFortune给“imageView ”时命名为“image” 。UIImageView是UIView的子类,即它可以添加到视图层次结构中。UIImage只是一个形象。它没有框架,角半径,边框宽度等。

这意味着,当您想要将在代码中创建的UIImage实际添加到视图中时,您需要通过以下方式执行此操作:

  1. 创建一个实例 UIImageView
  2. 将该UIImageView可选image属性设置为aUIImage
  3. 添加UIImageView到视图层次结构中

这里有一个很好的参考,你可以了解差异:UIImage和UIImageView之间的区别

UIImage参考:https//developer.apple.com/documentation/uikit/uiimage

UIImageView参考:https//developer.apple.com/documentation/uikit/uiimageview

理解UIView子类化:https//developer.apple.com/documentation/uikit/uiview&https//medium.com/@fvaldivia/view-hierarchy-in-swift-ios-9f86a7479cb5

用户回答回答于

你应该设置UIImageUIImageView's UIImage

可能你的globalElements.randomlyAssignedCookie类型不是UIImage

如果要将图像设置为UIImageView,则应使用UIImage类型。

只有相同的类型可以相互同步

我希望这会有所不同。

请享用。

扫码关注云+社区

领取腾讯云代金券