在运行时更改UIImage影响缺少的约束条件

问题描述:

我与iOS 9(Swift)在视图中显示一组八个图像视图,并添加了约束来设置imageViews的位置。在运行时更改UIImage影响缺少的约束条件

每个ImageView都从手动设置到故事板中的每个资源文件的资源文件加载图像。

所有工作正常,现在我想设置随机资产在运行时的imageViews ...

var images = ["T","B","J","R","R2","I","M","RL"] 
var randomImages = images 
var indexCount = UInt32(images.count) 

for imageView in TopImages{ 
    let index:Int = Int(arc4random_uniform(indexCount)) 
    imageView.image = UIImage(named: randomImages[index]) 
    randomImages.removeAtIndex(index) 
    indexCount -= 1 
} 

当此代码运行时,imageViews是比我设计的故事板的不同位置。 ..似乎当我设置编程ImageView.image = UIImage(...)我缺少约束。

是否可以在运行时更改资产名称,而无需执行UIImage的新实例?如果这是不可能的......任何人都知道任何解决方法,以实现我的目标加载随机图像编程方式,以前添加和定位故事板?

谢谢!

+0

你能告诉我们你的故事板和自动布局限制吗? – ganchito55

+0

你如何初始化UIImage视图? – smnk

+0

不,我没有在代码中初始化imageView。唯一影响运行时影响该帖子中显示的片段中图片视图的代码。如果我评论这一行:imageView.image = UIImage(名为:randomImages [index])图像的位置正确... –

自动布局将每个视图的intrinsicContentSize与添加的约束组合使用来计算布局。您可以在运行时更改imageView中的图像,但之后需要在每个UIImageView上调用invalidateIntrinsicContentSize,然后作为循环调用后的最后一步,在包含视图上调用layoutIfNeeded,以便再次考虑新变化时再次放置所有内容。

+0

不遵守此说明,感谢我阅读的信息.. –