English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
首先来看看要实现的效果图
示例代码如下
Untitled.gif #import "ViewController.h" #import "CollectionViewCell.h" #import "CollectionSectionView.h" @interface ViewController ()<UICollectionViewDelegateFlowLayout,UICollectionViewDataSource> @property (nonatomic,strong)UICollectionView *collectionView; @property (nonatomic,copy)NSString *leftOrRight; @property (nonatomic,strong)NSIndexPath *clickIndexPath; @end static NSString *cellIdentifier = @"CollectionViewCell"; static NSString *sectionIdentifier = @"CollectionSectionView"; @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; flowLayout.itemSize = CGSizeMake(50, 25); flowLayout.minimumLineSpacing = 0; flowLayout.minimumInteritemSpacing = 0; flowLayout.headerReferenceSize = CGSizeMake(0, 40); flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:flowLayout]; _collectionView.backgroundColor = [UIColor whiteColor]; _collectionView.delegate = self; _collectionView.dataSource = self; [_collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:cellIdentifier]; [_collectionView registerClass:[CollectionSectionView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:sectionIdentifier]; [self.view addSubview:_collectionView]; } - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ يعود 3; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ إذا (كان self.clickIndexPath.section == section) { إذا (كان self.clickIndexPath.section == 0 && [self.leftOrRight تساوي @"left"]) { يعود 3; } إذا (كان self.clickIndexPath.section == 0 && [self.leftOrRight تساوي @"right"]) { يعود 4; } إذا (كان self.clickIndexPath.section == 1 && [self.leftOrRight تساوي @"left"]) { يعود 10; } إذا (كان self.clickIndexPath.section == 1 && [self.leftOrRight تساوي @"right"]) { يعود 8; } إذا (كان self.clickIndexPath.section == 2 && [self.leftOrRight تساوي @"left"]) { يعود 33; } إذا (كان self.clickIndexPath.section == 2 && [self.leftOrRight تساوي @"right"]) { يعود 6; } } يعود 0; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; cell.label.text = [NSString stringWithFormat:@"%ld-%ld",indexPath.section,indexPath.row]; return cell; } - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{ if ([kind isEqualToString:UICollectionElementKindSectionHeader]) { CollectionSectionView *sectionView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:sectionIdentifier forIndexPath:indexPath]; sectionView.backgroundColor = [UIColor lightGrayColor]; sectionView.leftStr = @"الأثاث"; sectionView.rightStr = @"الإلكترونيات"; [sectionView customBtnHandelAction:^(NSString *leftOrRight) { self.clickIndexPath = indexPath; self.leftOrRight = leftOrRight; [collectionView reloadData]; }; return sectionView; } return nil; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }
#import <UIKit/UIKit.h> typedef void(^BtnHandleAction)(NSString *leftOrRight); @interface CollectionSectionView : UICollectionReusableView @property (nonatomic,copy)NSString *leftStr; @property (nonatomic,copy)NSString *rightStr; - (void)customBtnHandelAction:(BtnHandleAction)action; @end
#import "CollectionSectionView.h" @interface CollectionSectionView () @property (nonatomic,strong)UIButton *leftBtn; @property (nonatomic,strong)UIButton *rightBtn; @property (nonatomic,copy)BtnHandleAction btnHandelAction; @end @implementation CollectionSectionView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self setup]; } return self; } - (UIButton *)leftBtn{ if (!_leftBtn) { self.leftBtn = [UIButton buttonWithType:(UIButtonTypeCustom)]; _leftBtn.tag = 2000; _leftBtn.frame = CGRectMake(1, 1, self.frame.size.width / 2 - 2, self.frame.size.height - 2); _leftBtn.backgroundColor = [UIColor whiteColor]; [_leftBtn addTarget:self action:@selector(btnAction:) forControlEvents:(UIControlEventTouchUpInside)]; } return _leftBtn; } - (UIButton *)rightBtn{ if (!_rightBtn) { self.rightBtn = [UIButton buttonWithType:(UIButtonTypeCustom)]; _rightBtn.tag = 2001; _rightBtn.frame = CGRectMake(self.frame.size.width / 2 + 1, 1, self.frame.size.width / 2 - 2, self.frame.size.height - 2); _rightBtn.backgroundColor = [UIColor whiteColor]; [_rightBtn addTarget:self action:@selector(btnAction:) forControlEvents:(UIControlEventTouchUpInside)]; } return _rightBtn; } - (void)btnAction:(UIButton *)sender{ NSInteger tag = sender.tag; if (tag == 2000) { self.btnHandelAction(@"left"); } if (tag == 2001) { self.btnHandelAction(@"right"); } } - (void)customBtnHandelAction:(BtnHandleAction)action{ self.btnHandelAction = action; } - (void)setup{}} [self addSubview:self.leftBtn]; [self addSubview:self.rightBtn]; } - (void)setLeftStr:(NSString *)leftStr{ [self.leftBtn setTitle:leftStr forState:(UIControlStateNormal)]; [self.leftBtn setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)]; } - (void)setRightStr:(NSString *)rightStr{ [self.rightBtn setTitle:rightStr forState:(UIControlStateNormal)]; [self.rightBtn setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)]; } @end
الخاتمة
هذا هو نهاية محتوى هذا المقال، نأمل أن تساعد محتويات هذا المقال في تعلمكم أو عملكم، إذا كان لديكم أي أسئلة، يمكنكم ترك تعليقات للتفاعل.
بيان: محتويات هذا المقال منشورة عبر الإنترنت، وتنتمي إلى مالكها الأصلي، وقد تم إدراجها من قبل مستخدمي الإنترنت بشكل تلقائي، ولا تملك هذا الموقع حقوق الملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية مرتبطة بذلك. إذا اكتشفتم محتوى يشتبه في حقوق النسخ، يرجى إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لتقديم الشكوى، وقدموا الأدلة ذات الصلة، وإذا تم التحقق من ذلك، سيتم حذف المحتوى المشبوه فوراً.