Ios 在运行时更改UIImageView中的图像

Ios 在运行时更改UIImageView中的图像,ios,swift3,uiimageview,Ios,Swift3,Uiimageview,我已经在UIScrollView中以编程方式声明了UIImageView属性 var scrollView: UIScrollView! var imageView = UIImageView(image: UIImage(named: "OPA_farm.png")) let drawView = UIView() 我用OPA_farm.png初始化它的原因是,这是我获得超大图像并正确滚动的唯一方法 在viewDidLoad中,它们被添加为子视图 // other stuff

我已经在UIScrollView中以编程方式声明了UIImageView属性

var scrollView: UIScrollView!    
var imageView = UIImageView(image: UIImage(named: "OPA_farm.png"))
let drawView = UIView()
我用OPA_farm.png初始化它的原因是,这是我获得超大图像并正确滚动的唯一方法

在viewDidLoad中,它们被添加为子视图

    // other stuff here
    myView.addSubview(scrollView)
    myView.addSubview(drawView)
    scrollView.addSubview(imageView)
但是更改UISegmentedControl发送器应该会更改图像和其他内容

@IBAction func chooseFarm(_ sender: UISegmentedControl) {
        switch farmSegment.selectedSegmentIndex {
        case 1:
            imageView = UIImageView(image: UIImage(named: "OF_farm.png"))
            // other things
            break
        default:
            imageView = UIImageView(image: UIImage(named: "OPA_farm.png"))
            // other things
      }
}
其他东西会改变,但.png图像不会。我在发帖之前和发帖期间搜索并尝试过的东西

imageView.reloadInputViews imageView.setNeedsDisplay 这些东西似乎不适用

DispatchQueue.main.async相关 分析与tableView相关的
跟随QuickHelp Inspector到Apple文档提供了稀疏的信息,在Objective C中。我知道我可以在XCode 8中使用当前Swift语法的转换函数,它与其他帖子一致,因为我似乎做的一切都是正确的。我累了。有人能解开谜团吗?

一旦你有了一个图像视图,你就不需要每次按下按钮都创建一个新的

您可以使用imageView在类的顶部声明这些

let ofImage = UIImage(named: "OF_farm.png")
let opaImage = UIImage(named: "OPA_farm.png")
    switch farmSegment.selectedSegmentIndex {
    case 1:
        imageView.image = ofImage
        // other things
        break
    default:
        imageView.image = opaImage
        // other things
  }
在case语句中,只需将其中一个图像重新分配给imageView

let ofImage = UIImage(named: "OF_farm.png")
let opaImage = UIImage(named: "OPA_farm.png")
    switch farmSegment.selectedSegmentIndex {
    case 1:
        imageView.image = ofImage
        // other things
        break
    default:
        imageView.image = opaImage
        // other things
  }
在viewDidLoad中,将imageView添加到scrollView后,如果需要,可以添加自动布局约束。请确保先设置此选项:

 imageView.translatesAutoresizingMaskIntoConstraints = false

最后一点注意:不要忘了使用7+和SE设置以及其他设置在模拟器中查看您的工作,以确保您拥有适合所有人的功能。

在函数中使用self.imageView而不是仅使用imageView没有任何区别。顺便说一句,实际上。。,imageView.image=UIImageName:XXX_farm.png是我在交换机案例中必须更改的全部内容。是的,我不必要地创建了新的。我还没有做你建议的其他事情,但我可以看出它在好的技术上有什么优势。我把它加载到当地的一家农业公司,这对于他们的需求来说太具体了,我不想考虑发布到App Store,但是我会考虑他们使用不同大小的设备。很高兴我能帮忙。听起来是个有趣的项目!