আমার অ্যাপটিতে আমার একটি ট্যাগ বার রয়েছে যা একটি UICollectionView
& স ব্যবহার করে UICollectionViewFlowLayout
, একক সারির ঘর কেন্দ্র প্রান্তিকিত।
সঠিক ইনডেন্টটি পেতে, আপনি আপনার প্রস্থ থেকে সমস্ত কক্ষের মোট প্রস্থ (স্পেসিং সহ) বিয়োগ করুন UICollectionView
এবং দুটি দ্বারা বিভাজন করুন।
[........Collection View.........]
[..Cell..][..Cell..]
[____indent___] / 2
=
[_____][..Cell..][..Cell..][_____]
সমস্যাটি হ'ল এই ফাংশনটি -
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
আগে বলা হয় ...
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
... যাতে আপনি মোট প্রস্থ নির্ধারণ করতে আপনার ঘরগুলি দিয়ে পুনরাবৃত্তি করতে পারবেন না।
পরিবর্তে আপনাকে আবার প্রতিটি ঘরের প্রস্থ গণনা করতে হবে, আমার ক্ষেত্রে আমি ব্যবহার করি [NSString sizeWithFont: ... ]
আমার ঘরের প্রস্থগুলি ইউআইএবেল নিজেই নির্ধারিত হয়।
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
CGFloat rightEdge = 0;
CGFloat interItemSpacing = [(UICollectionViewFlowLayout*)collectionViewLayout minimumInteritemSpacing];
for(NSString * tag in _tags)
rightEdge += [tag sizeWithFont:[UIFont systemFontOfSize:14]].width+interItemSpacing;
rightEdge -= interSpacing/2;
CGFloat inset = collectionView.frame.size.width-rightEdge;
if(inset > 0)
return UIEdgeInsetsMake(0, inset/2, 0, 0);
else
return UIEdgeInsetsMake(0, 0, 0, 0);
}