2016-01-23 92 views
0

我與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])圖像的位置正確... –

回答

0

自動佈局將每個視圖的intrinsicContentSize與添加的約束組合使用來計算佈局。您可以在運行時更改imageView中的圖像,但之後需要在每個UIImageView上調用invalidateIntrinsicContentSize,然後作爲循環調用後的最後一步,在包含視圖上調用layoutIfNeeded,以便再次考慮新變化時再次放置所有內容。

+0

不遵守此說明,感謝我閱讀的信息.. –