2016-04-05 78 views
3

目標是使用相同的UIImageView呈現不同的圖像。每次用戶點擊一個不同的按鈕時,都會在UIImageView中呈現不同的圖像。在顯示新圖像之前在同一個UIImageView中加載多個圖像閃爍最後一個圖像

實施例用戶流量:

  • 用戶對於圖像1的UIImageView抽頭按鈕顯示爲裝載有圖像1.
  • 用戶敲擊不同的按鈕來關閉的UIImageView。 UIImageView被隱藏。
  • 用戶點擊圖像2的不同按鈕。UIImageView加載圖像2,然後取消隱藏。在圖像2出現之前圖像1出現片刻。

這是第一次運作。但是,隨後的每個時間都會在顯示第二個圖像之前顯示一秒鐘之前的先前圖像,導致閃爍的用戶體驗。例如,查看第二張圖片時,您會在第二張圖片出現在屏幕上之前的一瞬間看到第一張圖片。

如何修復後續加載,以避免先前的圖像出現?

此功能加載新的圖像到一個UIImageView:

private func loadImage(targetView: UIImageView, imageURL: String) { 
    // Get file path to <imageURL> 
    let imageURL = getFilePath(imageURL) 

    // Create image & show in <targetView> 
    if let image = UIImage(named: imageURL) { 
     targetView.contentMode = .ScaleAspectFill 
     targetView.image = image 
     targetView.clipsToBounds = true 
     targetView.hidden = false 
    } else { 
     print("Error rendering image for \(imageURL)") 
    } 
} 
+0

您是否嘗試將imageView的圖像設置爲零,然後再顯示下一個圖像? – MudOnTire

+0

@MudOnTire在'targetView.image = image'之前添加'targetView.image = nil'? – Crashalot

+0

我無法想象爲什麼會出現閃爍現象,因爲在按下按鈕顯示另一個圖像之前,imageView中已經有一個圖像,下一個圖像會將其替換,您的意思是下一個圖像會顯示並且令人失望,再次出現? – MudOnTire

回答

1

解決方法是在關閉時重置UIImageView,以便第二個圖像基本上重新加載到新的UIImageView中。

0

我不完全相信你想什麼來完成,但是這肯定是應該讓你用自己的方式解決。我試圖儘可能地減少錯誤,但我可以回答您的任何問題。

class RandomImage: UITableViewCell { 

@IBOutlet weak var ImageView: UIImageView! 
@IBOutlet weak var ChangingButton: UIButton! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 

    self.ChangingButton.setTitle("Change", forState: UIControlState.Normal) 
} 


@IBAction func changeImageTapped(sender: UIButton){ 
    var firstRandomNumber = arc4random_uniform(NUMBER) + 1 
    var firstImageString:String = String(format: "image%i", firstRandomNumber) 

    self.ImageView.image = UIIMAge(named: firstImageString) 

} 

}

連接您的網點和調整中的代碼所需要的信息,你應該得到一個按鈕後,當點擊了每次點擊後會返回一個隨機圖像。我希望這可以幫助你。

乾杯。

相關問題