সঠিক উত্তর হ্যাঁ , আপনি এটি করতে পারেন ।
আমি কয়েক সপ্তাহ আগে এই সমস্যাটি পেরিয়ে এসেছি। এটি আপনি যা ভাবেন তার চেয়ে আসলে সহজ। আপনার সেলগুলিকে NIBs (বা স্টোরিবোর্ড) এ রাখুন এবং অটো লেআউটটিকে সমস্ত কাজ করতে দিতে সেগুলি পিন করুন
নিম্নলিখিত কাঠামো দেওয়া:
TableView
TableViewCell
CollectionView
CollectionViewCell
CollectionViewCell
CollectionViewCell
[... কক্ষ বা বিভিন্ন কক্ষের আকারের পরিবর্তনশীল সংখ্যা]
সমাধানটি হ'ল অটো লেআউটটিকে প্রথমে সংগ্রহের ভিউসেল আকারগুলি গণনা করতে বলা হয়, তারপরে সংগ্রহটি কন্টেন্টসাইজটি দেখে এবং এটি আপনার ঘরের আকার হিসাবে ব্যবহার করে। এটি ইউআইভিউ পদ্ধতি যা "যাদু করে":
-(void)systemLayoutSizeFittingSize:(CGSize)targetSize
withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority
verticalFittingPriority:(UILayoutPriority)verticalFittingPriority
আপনাকে এখানে টেবিলভিউসেলের আকার নির্ধারণ করতে হবে, যা আপনার ক্ষেত্রে কালেকশন ভিউজের সামগ্রী আকার রয়েছে।
CollectionViewCell
এ CollectionViewCell আপনি প্রতিটি সময় আপনি মডেল লেআউট পরিবর্তন করুন সেল জানাতে হবে (যেমন: আপনাকে একটি পাঠ্য সঙ্গে একটি UILabel সেট, তারপর সেল আবার বিন্যাস করা হয়েছে)।
- (void)bindWithModel:(id)model {
// Do whatever you may need to bind with your data and
// tell the collection view cell's contentView to resize
[self.contentView setNeedsLayout];
}
// Other stuff here...
TableViewCell
TableViewCell জাদু আছে। এটিতে আপনার সংগ্রহে ভিউতে একটি আউটলেট রয়েছে, ইউআইকোলিকেশনভিউ ফ্লোলয়আউটটির আনুমানিক আইটেম সাইজ ব্যবহার করে সংগ্রহ ভিউ সেলগুলির জন্য স্বয়ংক্রিয় বিন্যাস সক্ষম করে ।
তারপরে, কৌশলটি হ'ল সিস্টেমটি লেআউটসাইজফিটিংসাইজ ... পদ্ধতিতে আপনার টেবিলভিউ সেলটির আকার নির্ধারণ করুন । (দ্রষ্টব্য: iOS8 বা তারপরে)
উল্লেখ্য: আমি tableView এর প্রতিনিধি কোষের উচ্চতা পদ্ধতি ব্যবহার করার চেষ্টা -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
.কিন্তু এটা খুব দেরি স্বয়ংক্রিয় বিন্যাস সিস্টেম গনা CollectionView contentSize জন্য এবং কখনও কখনও আপনি ভুল আকৃতিটিকে সবদিক থেকে কোষ খুঁজে পেতে পারেন।
@implementation TableCell
- (void)awakeFromNib {
[super awakeFromNib];
UICollectionViewFlowLayout *flow = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
// Configure the collectionView
flow.minimumInteritemSpacing = ...;
// This enables the magic of auto layout.
// Setting estimatedItemSize different to CGSizeZero
// on flow Layout enables auto layout for collectionView cells.
// https://developer.apple.com/videos/play/wwdc2014-226/
flow.estimatedItemSize = CGSizeMake(1, 1);
// Disable the scroll on your collection view
// to avoid running into multiple scroll issues.
[self.collectionView setScrollEnabled:NO];
}
- (void)bindWithModel:(id)model {
// Do your stuff here to configure the tableViewCell
// Tell the cell to redraw its contentView
[self.contentView layoutIfNeeded];
}
// THIS IS THE MOST IMPORTANT METHOD
//
// This method tells the auto layout
// You cannot calculate the collectionView content size in any other place,
// because you run into race condition issues.
// NOTE: Works for iOS 8 or later
- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority {
// With autolayout enabled on collection view's cells we need to force a collection view relayout with the shown size (width)
self.collectionView.frame = CGRectMake(0, 0, targetSize.width, MAXFLOAT);
[self.collectionView layoutIfNeeded];
// If the cell's size has to be exactly the content
// Size of the collection View, just return the
// collectionViewLayout's collectionViewContentSize.
return [self.collectionView.collectionViewLayout collectionViewContentSize];
}
// Other stuff here...
@end
TableViewController
আপনার টেবিলভিউ কনট্রোলারের টেবিলভিউ কক্ষগুলির জন্য অটো লেআউট সিস্টেমটি সক্রিয় করতে মনে রাখবেন :
- (void)viewDidLoad {
[super viewDidLoad];
// Enable automatic row auto layout calculations
self.tableView.rowHeight = UITableViewAutomaticDimension;
// Set the estimatedRowHeight to a non-0 value to enable auto layout.
self.tableView.estimatedRowHeight = 10;
}
ক্রেডিট: @ বারবার এইটিকে বাছাই করতে সহায়তা করেছে
UITableViewCell
এর একিউটাল টেবিলভিউ থেকে উচ্চতা কি আলাদা? আপনি উভয় দিকের উলম্ব স্ক্রলিং প্রয়োজনUICollectionView
এবংUITableView