iOS开发 纯代码创建UICollectionView

转:http://jingyan.baidu.com/article/eb9f7b6d8a81a5869364e8a6.html

iOS开发 纯代码创建UICollectionView

习惯了使用xib和StoryBoard创建UICollectionView项目工程的伙伴,需要转换使用纯代码来实现,想避免碰更多的壁,就需要认真了解创建UICollectionView过程了。创建UICollectionView比创建UITableView更加复杂,初始化方式也是相对奇特。以下是使用纯代码创建UICollectionView的方法。

工具/原料

  • MAC OS X操作系统
  • Xcode编译器

方法/步骤

  1. 1

    创建工程项目和视图控制器

    创建工程项目UICollectionView,新建一个UIViewController。选中工程,右键-New File…选择“Cocoa Touch Class”-Next,给个合理的名称ViewController,再Next完成。

    在AppDelegate.m文件包含#import "ViewController.h"。添加代码:

    UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:[[ViewController alloc]init]];

        self.window.rootViewController = navC;//将navC设置为根视图控制器。

    修改一下ViewController的显示样式,执行编译,run一下,效果如图。

  2. 2

    创建自定义UICollectionViewCell

    选中工程,右键-New File…选择“Cocoa Touch Class”-Next,选择继承于UICollectionViewCell类,给个合理的名称CollectionViewCell,再Next完成。

    1、自定义所需要的控件,比如UIImageView:

    @property(nonatomic ,strong)UIImageView *imgView;

    2、初始化控件,在方法- (id)initWithFrame:(CGRect)frame中实现:

    self.imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 30, 150, 140)];

            self.imgView.backgroundColor = [UIColor groupTableViewBackgroundColor];

            [self addSubview:self.imgView];

  3. 3

    创建UICollectionView及添加代理

    1、在ViewController.h添加事件代理和数据源代理<UICollectionViewDataSource,UICollectionViewDelegate>。

    2、在ViewController.m创建UICollectionView。需要使用UICollectionViewFlowLayout来创建,使用方法- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout;如果只用普通的init方法,是实现不了的。

    4、代理授权并添加至视图。

        self.collectionView.delegate = self;

        self.collectionView.dataSource = self;

        [self.view addSubview:self.collectionView];

  4. 4

    把UICollectionViewCell添加到UICollectionView内

    1、注册CollectionViewCell,添加cell需要在这里实现。方法:- (void)registerClass:(Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier;

    2、添加代理方法

    //定义展示的UICollectionViewCell的个数

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

    //定义展示的Section的个数

    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView;

    //每个UICollectionView展示的内容

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

  5. 5

    设置UICollectionView中的属性

    //定义每个UICollectionView 的大小(返回CGSize:宽度和高度)

    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;

    //定义每个UICollectionView 的间距(返回UIEdgeInsets:上、左、下、右)

    -(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;

    //定义每个UICollectionView 纵向的间距

    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;

    //UICollectionView被选中时调用的方法

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

    END

代码下载地址

  • https://github.com/cjq002/UICollectionView-Pure-code.git
  • 代码运行效果如图。

    END

时间: 2024-10-05 08:35:27

iOS开发 纯代码创建UICollectionView的相关文章

iOS开发之代码创建常用控件(UIButton、UILabel)的思路

代码创建按钮UIButton: (一)基本设置 //创建中间“+”按钮 UIButton *addBtn = [[UIButton alloc] init]; //设置默认背景图片 [addBtn setBackgroundImage:[UIImage imageNamed:@"AddButtonIcon"] forState:UIControlStateNormal]; //设置按下时背景图片 [addBtn setBackgroundImage:[UIImage imageName

iOS开发多线程篇—创建线程

iOS开发多线程篇—创建线程 一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建.启动线程 (1) NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread start]; // 线程一启动,就会在线程thread中执行self的run方法 主线程相关用法 + (NSThread *)mainThread; // 获得主线程 -

纯代码创建Button控件:

纯代码创建Button控件: // 创建按钮 UIButton *btn = [[UIButton alloc] init]; // 添加按钮 [self.view addSubview:btn]; // 设置frame btn.frame = CGRectMake(50, 50, 100, 100); // 设置背景图片 // 通过文件名加载图片(凡是PNG图片,都不用加拓展名) UIImage *normal = [UIImage imageName:@“btn_01”]; // 设置普通状

iOS开发-证书的创建与使用流程

这篇文章是为了给刚开始从事iOS开发的同胞一些方便吧,虽说这不算是什么重要的技术点,但是估计也会令人有时候比较苦恼,发现自己帅气的写完代码后却跑不了自己的手机上,或者在发布项目的时候卡住某个操作步骤,再或者因为项目的需要有推送的功能却怎么也收不到信息,其实有时候这几个情况并不是你代码出错,而是不规范的证书使用导致你并不知道其实你的证书可能已经不好用了,好啦,话不多说直接上步骤: 在你拥有了一个开发账号的前提下我们开始准备开发前的工作,我以我现在使用的公司开发者账号为例,创建真机调试证书(也就是t

ios 用纯代码写程序的时候,navigationController的导航栏的设置

我们都知道,如果用storyBoard设置导航栏很容易,点击左右item的时候,进入下一个界面,导航栏的颜色是跟上一层的是一样的,用纯代码写的时候,可以在当前控制器,和从当前控制器进入到下一个控制器都用代码实现对导航栏的控制,但是,每次都写代码设置,很麻烦,所以,可以这样: 创建一个MainTabBarController的类,在Appdelegate.m里面完成: - (BOOL)application:(UIApplication *)application didFinishLaunchi

【Android】纯代码创建页面布局(含异步加载图片)

开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 Fragment 中,采用 ScrollView + LinearLayout 实现. 1 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http:/

wcf纯代码创建控制台应用

https://svn.apache.org/repos/asf/incubator/stonehenge/contrib/stocktrader/dotnet/ stocktrader项目的dotnet版本 https://svn.apache.org/repos/asf/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorConsoleServiceHost/Program.cs 张善友 这是一个

swift 之 纯代码创建 cell

初学swift 但是网上只有很多swift用xib创建的cell,就算是有也不是我想要的.今天自己弄了一个不用xib纯代码写的,来上代码 自定义cell 下面是controller 例外说一点懒加载 OC的懒加载 @property (nonatomic, strong) NSMutableArray * dataSource; - (NSMutableArray *)dataSource { if (!_dataSource) { _dataSource = [NSMutableArray a

设计模式之单一职责原则(iOS开发,代码用Objective-C展示)

单一职责原则:就一个类而言,应该只有一个引起它变化的原因. 在iOS开发中,我们会很自然的给一个类添加各种各样的功能,比如随便写一个简单的应用程序,一般都会生成一个viewController类,于是我们将各种各样的代码,商业运算的算法.http请求的参数(params)封装.使用FMDB.coreData时的数据库访问语句都放在这个类里面,这就意味着,无论任何需求变化,都要来修改viewController这个类,这其实是很糟糕的,维护麻烦.复用不可能.缺乏灵活性. 也许上面说的略微夸张,因为