Ios UIImageView,更改。图像会导致重新显示-可以避免吗?
我和Ios UIImageView,更改。图像会导致重新显示-可以避免吗?,ios,swift,uiimageview,Ios,Swift,Uiimageview,我和 override func viewDidLayoutSubviews() { showDefaultCustomProcessing() } 在一个视图中,用户可以点击并更改图像 @IBAction func changeDoorTap(t:UITapGestureRecognizer) { thing.image = UIImage(named:...new image...) } 事实证明,无论何时更改.image,都会重新显示屏幕
override func viewDidLayoutSubviews()
{
showDefaultCustomProcessing()
}
在一个视图中,用户可以点击并更改图像
@IBAction func changeDoorTap(t:UITapGestureRecognizer)
{
thing.image = UIImage(named:...new image...)
}
事实证明,无论何时更改.image
,都会重新显示屏幕
(我不知道,但这是有道理的。)
不幸的是,viewDidLayoutSubviews运行,CustomProcessing返回到默认状态。那不好
作为一种解决办法,我这样做了
var requestCustomLayoutAfterViewDidLayoutSubviews:Bool = false
@IBAction func changeDoorTap(t:UITapGestureRecognizer)
{
saveTemporaryCustomProcessing()
thing.image = UIImage(named:...new image...)
requestCustomLayoutAfterViewDidLayoutSubviews = true;
}
override func viewDidLayoutSubviews()
{
performDefaultCustomProcessing()
if (requestCustomLayoutAfterViewDidLayoutSubviews)
{
recoverTemporaryCustomProcessing()
}
requestCustomLayoutAfterViewDidLayoutSubviews = false;
}
使用这样的标志是一种糟糕的模式
1) 是否有办法更改.image
但不强制重新启动
(也许,通过在层级别操纵它,或者其他方式?)
2) 你能不能“关掉”重新布置,然后再打开
有没有一种方法可以更改.image但不强制重新播放
确定:为UIImageView提供宽度约束和高度约束。如果没有这些,它将采用其图像的大小。有了它们,它只会遵守约束。不知道为什么需要这样做,但灵活地在活动状态中交换约束是常见的、受鼓励的、简单的;我总是这样做。苹果通过提供
activateConstraints
和deactivateConstraints
命令使这一点变得非常简单。啊,明白了!谢谢你,我不知道我为什么要麻烦,因为你不接受我的答案,但我也回答了另一个问题。老兄,你可能有错误的想法,我是一个巨大的“勾选一切”推广人!你知道,我在营地等几天是有礼貌的。