Pour ce genre de chose, UICollectionView
est le meilleur. Exact même délégué que UITableView
, juste plus flexible et configurable. Vous pouvez avoir des cellules carrées, vous pouvez définir la largeur de la cellule, vous pouvez faire défiler vers la gauche ou la droite, etc. Il est utilisé dans la capture d'écran ci-dessus, et instagram etc. Voici comment l'implémenter.
En .h:
@interface MyViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>
En .m:
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
UICollectionView *myCollectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) collectionViewLayout:flowLayout];
[myCollectionView setDelegate:self];
[myCollectionView setDataSource:self];
[myCollectionView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];
[myCollectionView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, -4)];
[myCollectionView setBackgroundColor:[UIColor whiteColor]];
[myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"CustomCell"];
[self.view addSubview:myCollectionView];
Ensuite, pour les méthodes de délégués:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
Si elle était moi - de UITableViewCell sur mesure est la façon dont je aller avec ça. – Tander
Utilisez un UITableViewCell personnalisé ou consultez cocoacontrols.com pour des choses similaires. – satheeshwaran
https://www.cocoacontrols.com/controls/openwatch - Un contrôle similaire pourrait être un endroit que vous pourriez commencer avec. – satheeshwaran