簡體   English   中英

在運行時在UIImageView中更改圖像

[英]Changing an Image in UIImageView at runtime

我已經在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")

在您的情況下,只需將其中一個圖像重新分配給您的imageView

    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設置(及其他設置)在模擬器中查看您的工作,以確保您擁有適合所有人的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM