为什么我不能使用图像变量来更改UI图像内部的图像

问题描述 投票:0回答:1

我正在尝试创建一组5个引导屏幕,其中包含不同的图像和文本。为了使代码更整洁,我只需要一个功能来设置当前屏幕的图像。

我当前的功能是这个:

private let facebookImage: UIImageView = {
        let image = #imageLiteral(resourceName: "facebook_icon")
        let imageView = UIImageView(image: image)
        imageView.frame = CGRect(x: 0, y: 0, width: 250, height: 250)
        return imageView
    }()

我希望能够做这样的事情...

private let displayImage: UIImageView = {
        let image = currentImage
        let imageView = UIImageView(image: image)
        imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
        return imageView

    }()

我可以在其中将currentImage变量更改为在类中声明的图像文字:

var twitter : UIImage = #imageLiteral(resourceName: "twitter_icon")
    var facebook : UIImage = #imageLiteral(resourceName: "facebook_icon")
    var linkedin : UIImage = #imageLiteral(resourceName: "linkedin_icon")
    var instagram : UIImage = #imageLiteral(resourceName: "instagram_icon")
    var youtube : UIImage = #imageLiteral(resourceName: "youtube_icon")
    weak var currentImage : UIImage?

出现错误时出现我的问题:Instance member 'currentImage' cannot be used on type 'ViewController',但我不明白为什么。我已经审查了其他相关问题,但它们似乎无济于事。

swift uiimageview uiimage
1个回答
0
投票

这里您需要一个函数而不是实例属性

func getImgaeV(_ imageName:String) -> UIImageView { 
    let imageView = UIImageView(image: imageName)
    imageView.frame = CGRect(x: 0, y: 0, width: 250, height: 250)
    return imageView
}

使用

facebookImage = getImgaeV("facebook_icon")
twitterImage = getImgaeV("twitter_icon")

我认为您的属性有些相似,因此您可以这样做

var allImageViews = [UIImageView]()

然后在viewDidLoad里面

allImageViews =   ["facebook_icon","twitter_icon"].map { getImgaeV($0) }
© www.soinside.com 2019 - 2024. All rights reserved.