এই প্রশ্নের উত্তর দিতে দেরি হয়ে গেছে তবে আমি সম্প্রতি এই সমস্যাটি দিয়েছি।
@ লির উপরের উত্তরগুলি আমার উত্তর পেতে আমাকে অনেক সহায়তা করে। তবে এই উত্তরটি উদ্দেশ্য-সি এর মধ্যে সীমাবদ্ধ এবং আমি দ্রুত কাজ করছি ।
@ উত্তর আপনার উত্তরের রেফারেন্স সহ, আমাকে দ্রুত ব্যবহারকারীকে এই সমস্যাটি সহজে সমাধান করার অনুমতি দিন। তার জন্য, দয়া করে নীচের পদক্ষেপগুলি অনুসরণ করুন:
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")
}
আমি আশা করি এটি আপনার সমস্যাটি দ্রুতগতিতে সমাধান করতে সহায়তা করবে।