English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Examinons d'abord l'effet graphique à réaliser
Voici un exemple de code
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]; // Effectuer toute autre configuration après avoir chargé la vue, généralement à partir d'un 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{ return 3; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ if (self.clickIndexPath.section == section) { if (self.clickIndexPath.section == 0 && [self.leftOrRight isEqualToString:@"left"]) { return 3; } if (self.clickIndexPath.section == 0 && [self.leftOrRight isEqualToString:@"right"]) { return 4; } if (self.clickIndexPath.section == 1 && [self.leftOrRight isEqualToString:@"left"]) { return 10; } if (self.clickIndexPath.section == 1 && [self.leftOrRight isEqualToString:@"right"]) { return 8; } if (self.clickIndexPath.section == 2 && [self.leftOrRight isEqualToString:@"left"]) { return 33; } if (self.clickIndexPath.section == 2 && [self.leftOrRight isEqualToString:@"right"]) { return 6; } } return 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(@"gauche"); } if (tag == 2001) { self.btnHandelAction(@"droite"); } } - (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
Résumé
Voici le contenu complet de cet article. J'espère que le contenu de cet article pourra aider à votre apprentissage ou à votre travail. Si vous avez des questions, vous pouvez laisser des commentaires pour échanger.
Déclaration : Le contenu de cet article est tiré du réseau, propriété de l'auteur original, le contenu est apporté par les utilisateurs d'Internet et téléversé spontanément. Ce site ne détient pas de propriété, n'a pas été édité par l'homme, et n'assume pas de responsabilité juridique. Si vous trouvez du contenu suspect de violation de copyright, veuillez envoyer un e-mail à : notice#w3Déclaration : Le contenu de cet article est tiré du réseau, propriété de l'auteur original, le contenu est apporté par les utilisateurs d'Internet et téléversé spontanément. Ce site ne détient pas de propriété, n'a pas été édité par l'homme, et n'assume pas de responsabilité juridique. Si vous trouvez du contenu suspect de violation de copyright, veuillez envoyer un e-mail à : notice#w