इस प्रश्न का उत्तर देने में बहुत देर हो चुकी है लेकिन मैं हाल ही में इस मुद्दे से गुज़रा हूँ।
@ ली का उपरोक्त उत्तर मुझे अपना उत्तर पाने में बहुत मदद करता है। लेकिन वह जवाब ऑब्जेक्टिव-सी तक सीमित है और मैं तेजी से काम कर रहा था ।
@ आपके उत्तर के संदर्भ में, मुझे स्विफ्ट उपयोगकर्ता को यह समस्या आसानी से हल करने दें। उसके लिए, कृपया नीचे दिए गए चरणों का पालन करें:
CGFloat
घोषणा खंड में एक चर घोषित करें :
var height : CGFloat!
पर viewDidAppear
आप इसे प्राप्त कर सकते हैं:
height = self.myCollectionView.collectionViewLayout.collectionViewContentSize().height
हो सकता है कि जब आप reload
डेटा तब नए डेटा के साथ एक नई ऊंचाई की गणना करने की आवश्यकता है तो आप इसे प्राप्त कर सकते हैं: addObserver
सुनने के लिए जब आपका CollectionView
समाप्त डेटा पुनः लोड करें viewWillAppear
:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
....
....
self.shapeCollectionView.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.Old, context: nil)
}
फिर नई ऊंचाई प्राप्त करने के लिए बलो फ़ंक्शन जोड़ें या collectionview
समाप्त होने के बाद कुछ भी करें :
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
let newHeight : CGFloat = self.myCollectionView.collectionViewLayout.collectionViewContentSize().height
var frame : CGRect! = self.myCollectionView.frame
frame.size.height = newHeight
self.myCollectionView.frame = frame
}
और प्रेक्षक को दूर करने के लिए मत भूलना:
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(true)
....
....
self.myCollectionView.removeObserver(self, forKeyPath: "contentSize")
}
मुझे उम्मीद है कि यह आपके मुद्दे को तेजी से हल करने में मदद करेगा।