美文网首页
UICollectionView(九宫格)

UICollectionView(九宫格)

作者: 143db5b5572a | 来源:发表于2016-07-02 23:58 被阅读0次

    //

    //  XZProductsController.m

    //  Created by chao on 14-8-16.

    //  Copyright (c) 2014年chao. All rights reserved.

    //

    #import"XZProductsController.h"

    #import"XZProduct.h"

    #import"XZProductCell.h"

    staticNSString*ProductCellID =@"ProductCell";

    @interfaceXZProductsController()

    /**

    *数据模型

    */

    @property(nonatomic,strong)NSArray*products;

    @end

    @implementationXZProductsController

    //加载数据模型

    - (NSArray*)products

    {

    if(_products==nil)_products= [XZProductproducts];

    return_products;

    }

    /**

    UICollectionView must be initialized with a non-nil layout parameter

    UICollectionView必须使用一个非空的布局参数实例化

    @property(nonatomic) CGFloat minimumLineSpacing;最小行间距

    @property(nonatomic) CGFloat minimumInteritemSpacing;格子之间最小间距

    @property(nonatomic) CGSize itemSize;格子大小

    @property(nonatomic) UIEdgeInsets sectionInset;内边距

    */

    #warning mark -会在第一个调用后再调用viewDidLoad

    //必须使用一个非空的布局参数实例化

    - (instancetype)init

    {

    //创建UICollectionView布局的实例对象

    UICollectionViewFlowLayout*layout = [[UICollectionViewFlowLayoutalloc]init];

    //格子的大小

    layout.itemSize=CGSizeMake(80,80);

    //格子之间最小间距

    layout.minimumInteritemSpacing=0.0f;

    //最小行间距

    layout.minimumLineSpacing=16.0f;

    //内边距上左下右

    layout.sectionInset=UIEdgeInsetsMake(20,0,0,0);

    //调用父类的给CollectionView传入指定的布局参数

    return[superinitWithCollectionViewLayout:layout];

    }

    - (void)viewDidLoad

    {

    [superviewDidLoad];

    //设置collectionView背景

    self.collectionView.backgroundColor= [UIColorcolorWithPatternImage:[UIImageimageNamed:@"bg"]];

    //读取xib文件

    UINib*nib = [UINibnibWithNibName:@"XZProductCell"bundle:nil];

    //注册cell告诉collectionView以指定的xib文件来创建

    [self.collectionViewregisterNib:nibforCellWithReuseIdentifier:ProductCellID];

    }

    #pragma mark -数据源方法

    //里面有多少个item (里面总共有多少个框框、件)

    - (NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section

    {

    //取出数组里的模型个数有多少件

    returnself.products.count;

    }

    /**

    *每个item(框框、件)的内容

    */

    - (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath

    {

    // indexPath参数要求单元格必须要提前注册

    XZProductCell*cell = [collectionViewdequeueReusableCellWithReuseIdentifier:ProductCellIDforIndexPath:indexPath];

    //给cell传数据设置cell里面的内容

    cell.product=self.products[indexPath.item];

    returncell;

    }

    #pragma mark -代理方法

    //选中某个框框

    - (void)collectionView:(UICollectionView*)collectionView didSelectItemAtIndexPath:(NSIndexPath*)indexPath

    {

    NSLog(@"摸我了");

    //获取当前点击的数据模型

    XZProduct*p =self.products[indexPath.item];

    //拼接url路径// url :协议+资源路径

    NSString*urlStr = [NSStringstringWithFormat:@"%@://%@", p.customUrl, p.ID];

    //字符串转url

    NSURL*url = [NSURLURLWithString:urlStr];

    //判断本机是否安装了点击的软件如果没装就去AppStrore下载已下载就打开软件

    if(![[UIApplicationsharedApplication]canOpenURL:url]) {

    //打开指定的链接下载

    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:p.url]];

    }else{

    //打开安装软件

    [[UIApplicationsharedApplication]openURL:url];

    }

    }

    @end

    相关文章

      网友评论

          本文标题:UICollectionView(九宫格)

          本文链接:https://www.haomeiwen.com/subject/vjnqjttx.html