zoukankan      html  css  js  c++  java
  • tableView镶嵌加入CollectionView实现方法

    创建一个继承UICollectionView的类QHCollectionView
    在QHCollectionView.h中添加接口方法

     1 @interface QHCollectionView : UICollectionView
     2 /**
     3   *  @frame: 外界传来的frame 即collectionView的大小
     4   *
     5   *  @itemSize: 即collectionViewCell上的Item大小
     6   *
     7   *  @imagerArr: 外界存放UIImage的数组
     8   */
     9 - (instancetype)initWithFrame:(CGRect)frame collectionViewItemSize:(CGSize)itemSize withImageArr:(NSArray *)imagerArr;
    10 @end
     1 #import "QHCollectionView.h"
     2 
     3 #define cellID @"cellID"
     4 @interface QHCollectionView ()<UICollectionViewDelegate, UICollectionViewDataSource>
     5 @property (nonatomic, strong) UICollectionViewFlowLayout *layout;
     6 @property (nonatomic, assign) CGSize ItemSize;
     7 @property (nonatomic, strong) NSArray *ImageArray;
     8 @end
     9 @implementation QHCollectionView
    10 - (UICollectionViewFlowLayout *)layout {
    11     if (!_layout) {
    12         _layout = [[UICollectionViewFlowLayout alloc] init];
    13         _layout.itemSize = self.ItemSize;
    14         _layout.minimumLineSpacing = 10.0;
    15         _layout.minimumInteritemSpacing = 0.0;
    16         _layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
    17         _layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10);
    18     }
    19     return _layout;
    20 }
    21 - (instancetype)initWithFrame:(CGRect)frame collectionViewItemSize:(CGSize)itemSize withImageArr:(NSArray *)imagerArr {
    22     _ItemSize = itemSize;
    23     if (self = [super initWithFrame:frame collectionViewLayout:self.layout]) {
    24 //        [self setLayout:self.layout];
    25         _ImageArray = imagerArr;
    26         self.bounces = NO;
    27         self.pagingEnabled = NO;
    28         self.showsHorizontalScrollIndicator = NO;
    29         self.delegate = self;
    30         self.dataSource = self;
    31         [self registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:cellID];
    32     }
    33     return self;
    34 }
    35 
    36 #pragma mark - UICollectionViewDelegate --- UICollectionViewDataSource
    37 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    38     return self.ImageArray.count;
    39 }
    40 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    41     UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
    42     [cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; //
    43 
    44     UIImageView *imageV = [[UIImageView alloc] initWithImage:_ImageArray[indexPath.row]];
    45     CGRect imageFrame = imageV.frame;
    46     imageFrame.size = _ItemSize;
    47     imageV.frame = imageFrame;
    48     [cell.contentView addSubview:imageV];
    49     return cell;
    50 }
    51 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    52     NSLog(@"第%ld分区--第%ld个Item", indexPath.section, indexPath.row);
    53 }
    54 
    55 @end

    最后在ViewController.m中导入头文件 以及调用

     1 #import "ViewController.h"
     2 #import "QHCollectionView.h"
     3 @interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
     4 @property (nonatomic, strong) UITableView *tableView;
     5 @end
     6 
     7 @implementation ViewController
     8 - (UITableView *)tableView {
     9     if (!_tableView) {
    10         _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:(UITableViewStylePlain)];
    11         _tableView.delegate = self;
    12         _tableView.dataSource = self;
    13         [self.view addSubview:_tableView];
    14     }
    15     return _tableView;
    16 }
    17 - (void)viewDidLoad {
    18     [super viewDidLoad];
    19     [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
    20 }
    21 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    22     return 200;
    23 }
    24 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    25     return 2;
    26 }
    27 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    28     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath];
    29     UIImage *image1 = [UIImage imageNamed:@"1.jpg"];
    30     UIImage *image2 = [UIImage imageNamed:@"2.jpg"];
    31     UIImage *image3 = [UIImage imageNamed:@"3.jpg"];
    32     UIImage *image4 = [UIImage imageNamed:@"4.jpg"];
    33     NSArray *array = @[image1, image2, image3, image4, image1, image2, image3, image4];//可以自己导入喜欢的图片
    34 
    35     QHCollectionView *CollectionView = [[QHCollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 200) collectionViewItemSize:CGSizeMake(100, 180) withImageArr:array];
    36 
    37     [cell.contentView addSubview:CollectionView];
    38     return cell;
    39 }
    40 - (void)didReceiveMemoryWarning {
    41     [super didReceiveMemoryWarning];
    42     // Dispose of any resources that can be recreated.
    43 }
    44 
    45 @end

    可以优化,创建一个类继承tableViewcell,重写,这里就不在上传代码了。

  • 相关阅读:
    python实践分享:关于排序算法,怎么选择sort()或者sorted()?
    python面试题汇总第06期-正则表达式(内附7题及答案)
    2020年最全python面试题汇总第05期(内附字符串8题及答案)
    2020年最全python面试题汇总第04期(内附13题及答案)
    2020年最全python面试题汇总第03期(内附10题及答案)
    2020年最全python面试题汇总第02期(内附18题及答案)
    2020年最全python面试题汇总第02期(内附16题及答案)
    python爬虫从小白到高手 Day2 动态页面的爬取
    python爬虫从小白到高手 Day1 爬取百度音乐歌单
    python爬虫从小白到高手 Day0 综述
  • 原文地址:https://www.cnblogs.com/henusyj-1314/p/5526691.html
Copyright © 2011-2022 走看看