我試圖檢查傳遞給ViewController的字典是否有指向圖像的鏈接。 如果它有一個鏈接,我想顯示圖片,使用AlamofireImage。從UIScrollView中刪除子視圖並更新視圖
如果沒有,那麼簡單地從滾動視圖中刪除的UIImageView,所以下面的圖片中的其他項目將堅持在屏幕的頂部。
這裏的設置:
的UIScrollView
- > UIView的
- >的UIImageView
- >的UILabel(標題爲一些簡短的文字)
- > UILabel(使得視圖可滾動的內容的一些長文本)
我設置通過界面生成器和自動佈局我的意見像這樣:
的UIImageView:頂,左,右,下約束用1:高度的1縱橫比寬度沒有特別的高度/寬度
的UILabel:頂部(需要優先級)圖像,頂部(高優先級)頂部佈局導,右,左,下約束
第二的UILabel:頂,左,右,下約束
裏面viewDidLoad中
if let imageURLString = item["imageLink"] as? String {
let imageURL = NSURL(string: imageURLString)!
image.af_setImageWithURL(imageURL, placeholderImage: nil, filter: nil, imageTransition: .CrossDissolve(2), runImageTransitionIfCached: true, completion: nil)
}
else {
self.image.removeFromSuperview()
self.scrollView.setNeedsLayout()
}
有了這個代碼,當有一個鏈接,它加載圖像,並顯示一切良好,沒有搞亂了滾動。但是從scrollView中刪除它可以防止scrollView能夠滾動。即使滾動條指示燈顯示,視圖「嘗試」滾動,但一切都會被凍結!
您的回答有效。即使沒有圖像,將初始高度約束設置爲低優先級也會執行該作業。我試圖在設置圖像之前和之後打印ScrollView和UIImageView的contentSize和約束。我在那裏感興趣的是,如果你沒有在ImageView中放置圖像,ImageView和ScrollView將不會有任何contentSize約束。你知道爲什麼會這樣嗎?即使我的ImageView的縱橫比爲1:1? – Mehrdadmaskull
其全部歸因於內在內容大小。就像UILabel和UIButton根據其內容調整自己的大小一樣,UIImageView也根據它將要保存的圖像的大小自行調整大小。 內在內容大小對於標籤和按鈕非常有用,但對於UIImageView來說不太好。因爲要設置爲UIImageView的圖像實際上可能大於屏幕大小,因此我們不希望圖像視圖與圖像本身一樣大。 –