मैं एक UICollectionView
(पहली बार के लिए) को लागू करने के साथ कर रहा हूँ clipsToBounds सम्मान नहीं करता। मैं प्रत्येक टाइल फ्रेम के केंद्र में दिखाना चाहता हूं, इसकी बहन टाइल्स आंशिक रूप से बाईं ओर दाईं ओर दिखाई देती हैं (सफारी ऐप में पेज चयनकर्ता की तरह कुछ)। मुझे अंतर्निहित सेल डेक्यूइंग का लाभ उठाने के लिए UICollectionView
का उपयोग करने में दिलचस्पी है और इसके बजाय घुमाए गए UITableView
का उपयोग नहीं करना चाहिए।
अंक
मुद्दा मैं खोजने रहा है कि जब pagingEnabled = YES
और clipsToBounds = NO
का उपयोग कर, UICollectionView
जैसे ही पेजिंग पूरा हो गया है के रूप में collectionView
फ्रेम के बाहर की कोशिकाओं को हटा (वे visibleCells
सरणी में नहीं कर रहे हैं) है। क्या कोई इस बुनियादी सेटअप को बनाए रखते हुए बहन टाइल्स के पूर्वावलोकन प्रदर्शित करने के प्रभाव को प्राप्त करने के बारे में सलाह दे सकता है? या मैं इस गलत तरीके से आ रहा हूँ?
स्क्रीनशॉट
शुरू स्क्रॉल अंत
स्क्रॉल स्क्रीन बिल्कुल सही है। लेकिन शुरुआत और अंत शॉट्स में मैं नीले मार्जिन में हरे रंग की दिखाई देना चाहता हूं। मैं collectionView में एक विशेषज्ञ नहीं हूँ
#import "AppDelegate.h"
@interface ViewController : UICollectionViewController
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"ID"];
[self.view setBackgroundColor:[UIColor blueColor]];
// pad the collection view by 20 px
UIEdgeInsets padding = UIEdgeInsetsMake(20.0, 20.0, 20.0, 20.0);
[self.collectionView setFrame:UIEdgeInsetsInsetRect(self.view.frame, padding)];
// set pagingEnabled and clipsToBounds off
[self.collectionView setPagingEnabled:YES];
[self.collectionView setClipsToBounds:NO];
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 5;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ID" forIndexPath:indexPath];
UILabel *label = [[UILabel alloc] initWithFrame:cell.bounds];
label.textAlignment = NSTextAlignmentCenter;
label.text = [NSString stringWithFormat:@"%d", indexPath.row];
[label setBackgroundColor:[UIColor greenColor]];
[cell.contentView addSubview:label];
return cell;
}
@end
@implementation AppDelegate
{
ViewController *vc;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// setup the UICollectionViewFlowLayout
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(280, 280);
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 0;
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
// add a custom UICollectionViewController to the window
vc = [[ViewController alloc] initWithCollectionViewLayout:layout];
self.window.rootViewController = vc;
self.window.backgroundColor = [UIColor yellowColor];
[self.window makeKeyAndVisible];
return YES;
}
@end
हमने पाया कि यह तब तक काम करता है जब तक आपके पास 6 या अधिक कोशिकाएं न हों, जिस बिंदु पर कोशिकाएं गायब होने लगती हैं भले ही वे दृश्य फ्रेम के अंदर हों। ऐसा तब होता है जब प्रश्न में सेल * पड़ोसी कोशिकाओं के पीछे * है (यह वह जगह है जहां हमने जांच बंद कर दी है)। –
मैं इस काम को आईओएस 8 पर, नए आईफोन आकारों पर और ऑटोलायआउट का समर्थन नहीं कर सकता। –