2016-04-05 53 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) 

} 

}

连接您的网点和调整中的代码所需要的信息,你应该得到一个按钮后,当点击了每次点击后会返回一个随机图像。我希望这可以帮助你。

干杯。

相关问题