这里我们是从xib文件来加载的Supplementary View, 先创建两个UICollectionReusableView子类,在创建该子类的同时创建相应的xib文件,如下所示: ?...(2) 因为我们是从xib文件中加载的UICollectionReusableView,所以需要在相应的UICollectionView上进行注册。...,UICollectionViewDataSource主要是负责加载数据源的,包括Section的个数,每个Section中Cell的个数,每个Section中Supplementary View的种类...代码的具体意思是第一个Section中的所有Cell的尺寸是(50,50)。 其余的时(60,60)。...高亮就是触摸Cell时该Cell变为高亮状态,在代码中的反应就是Cell的Highligth属性变为YES。而触摸结束时,Cell的Highligth属性就变为NO。
当然,您可以自定义一些内容,例如非活动提示颜色,活动提示颜色,默认/重点背景颜色,边框颜色和错误颜色。...现在,您可以创建一个继承自 ExpandingViewController 的 UIViewController,注册在第一步中创建的单元格,并添加UICollectionViewDataSource。...AnimatedCollectionViewLayout 在项目之间滚动时,UICollectionView没有默认的过渡效果动画。...中显示倾斜的单元格。...该库可用于每个 UICollectionView,水平和垂直具有动态单元格高度。 在可配置的项目中,可以配置倾斜大小,倾斜方向,倾斜角度,滚动方向,行距,项目大小以及排除第一个或最后一个单元倾斜。
今天写代码,遇见了这样的错误,检查代码都没有错误,运行还是报如下的错误: *** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind...forIndexPath:viewCategory:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.60.7/UICollectionView.m...:3983 这是我写的代码 ?...找了还就,最终找到错误原因:在自定义xib时,额外多了一个控件在另外的区域,把此控件删掉即可。 如图: ? 把多余的imageview删除即可。还是自己太马虎啊。
在iOS10中,苹果为UICollectionViewCell引入了Pre-Fetching预加载机制用于提升它的性能。... @required // 预加载数据 - (void)collectionView:(UICollectionView *)collectionView prefetchItemsAtIndexPaths...collectionView:prefetchItemsAtIndexPaths 方法和collectionView:cancelPrefetchItemsAtIndexPaths 方法(可选) 3、将第1步中遵从协议的类设置为...(nonatomic, weak) UICollectionView *collectionView; @end @implementation ViewController //懒加载imgURLArray...效果演示.gif 写在后面的话 1、这个新特性仍然需要探究 2、遇到的一个坑:细心看的话可以发现我的字典是懒加载的,如果直接在viewDidLoad中初始化会在 weakSelf.imgs[currentURL
中的cell特性外,CollectionView中的Item大小和位置可以自由定义 4、通过layout布局回调的代理方法,可以动态的定制每个item的大小和collection的大体布局属性 5、更加强大一点... 在了解UICollectionView的更多属性前,我们先来使用其进行一个最简单的流布局试试看,在controller的viewDidLoad中添加如下代码: //创建一个layout...是iOS6.0之前的新类,因此这里统一了从复用池中获取cell的方法,没有再提供可以返回nil的方式,并且在UICollectionView的回调代理中,只能使用从复用池中获取cell的方式进行cell...,信息如下,让我们使用从复用池中取cell的方式: ?...则会在一列充满后,进行第二列的布局,这种方式也被称为流式布局 三、UICollectionView中的常用方法和属性 //通过一个布局策略初识化CollectionView - (instancetype
但值得注意的时,在UICollectionView中,不仅cell可以重用,Supplementary View和Decoration View也是可以并且应当被重用的。...这次Apple给我们带来的好康是被选中cell的自动变化,所有的cell中的子view,也包括contentView中的子view,在当cell被选中时,会自动去查找view是否有被选中状态下的改变。...需要注意根据滚动方向不同,header和footer的高和宽中只有一个会起作用。垂直滚动时section间宽度为该尺寸的高,而水平滚动时为宽度起作用,如图。 ...加载过程 总的加载过程是先加载UICollectionView的委托回调配置,再初始化UICollectionViewCell。 ...alloc] initWithFrame:CGRectZero collectionViewLayout: _flowLayout]; 要点1:单元格尺寸计算时要来考虑间隔线宽度的影响; 要点2:minimumLineSpacing
场景需求 一个表格视图(或者宫格视图)中,当一个单元格被选中时设置彩色样式,选中其它单元格时设置灰色样式。 2. 一个思路 通过实现选中和非选择的代理,以在适当的时机进行UI更新操作。 3....UICollectionView 4.1 通过屏幕点击改变的选中状态回调给代理 //选中 - (void)collectionView:(UICollectionView *)collectionView...collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath; 4.2 代码设置默认选中状态 (要等数据加载完成之后再调用) 执行方法的主体...4.3 补充:代码设置选中状态 执行方法的主体:cell对象 - (void)setSelected:(BOOL)selected; 注意的是: 类似的,这种方法改变cell的选中状态时,当屏幕选中其它...手动执行代理 上述两张方案的区别在于,设置选中状态完后,屏幕点击其它cell时,一个执行原cell的didDeselect方法,一个不执行。
这个问题其实问的很模糊,我也是咨询了很多人才知道,他们所谓的问题不容易测试,是指如下两种情况: 修改或删除 @IBOutlet 的变量名时,对应的Storyboard上未做处理,导致运行时崩溃,崩溃内容看不懂...构建视图或者控制器,但找不到名为HomeController的控制器,看到这里就应该明白,我们某个Storyboard上绑定了名为HomeController的控制器,但代码中找不到,可能是改名或者删除了...这个方法找不到对应的属性时,就会抛出异常, 这里就是指找不到featuresController属性,通过全局搜索可以发现,代码中改了名字, 解决的方法同样是删掉对应的连线或者修改变量名时使用重构 由此可见...而且重构代码时利用Xcode重构功能的话,连问题都不会出现 StoryBoard 和 Xib 降低执行效率?...从Storyboard创建竟然比纯代码更快?
4.避免过于庞大的XIB iOS5中加入的Storyboards(分镜)正在快速取代XIB。然而XIB在一些场景中仍然很有用。...Apple在相关文档中的记述是: 当你加载一个引用了图片或者声音资源的nib时,nib加载代码会把图片和声音文件写进内存。...这里我们用到的技巧就是模仿UITableView和UICollectionView的操作:不要一次创建所有的subview,而是当需要时才创建,当它们完成了使命,把他们放进一个可重用的队列中。...创建并隐藏这个view当这个screen加载的时候,当需要时显示它; 2. 当需要时才创建并展示。 每个方案都有其优缺点。...imageNamed的文档中这么说:这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。
那么,在没有 MainWindow.xib 文件的情况下,故事板是怎样被加载到app中的呢? ...nib file base name 的键,它会导致UIApplication去加载 MainWindow.xib 并将之连接到 app 中。...在以前,如果你要定制表视图单元格,你要么在代码中向cell对象添加自己的 subviews ,要么新建一个 nib 然后从nib 中加载你自己的 cell。...其次,你应当确保添加的内容能自动适应单元格尺寸的变化。例如,当你需要表格行能够被删除或移动时 ,Cell 尺寸会发生改变。 ...3 设计原则 3.1 布局设计原则 3.1.1 一个控件的布局尽量只采用一种方式,要么是Storyboard(XIB)要么是代码 因为视图在刷新时,会直接从Storyboard中加载控件的大小
UIViewController 的 view 的延迟加载:第一次使用的时候才会去加载,并不是创建 UIViewController 时加载。...loadView 方法大概的实现思路如下: func loadView() { // 如果UIViewController是通过storyboard创建的,从storyboard中加载视图来创建...return } // 如果UIViewController是通过xib创建的,从xib中加载视图来创建view if xib创建 { // ......接收值的 UIViewController 实现需要传值的 UIViewController 中的闭包属性,在闭包的实现中拿到传过来的值进行使用。...UICollectionViewController:集合视图控制器,集成了 UICollectionView 的视图控制器。
#####集合视图的作用 集合视图是为了增强网格视图开发而在IOS6中开放的集合视图API。 #####集合视图的组成 集合视图有4个重要的组成部分,分别为: 单元格:即视图中的一个单元格。...节:即集合视图中的一个行数据,由多个单元格构成。 补充视图:即节的头和脚。 装饰视图:集合视图中的背景视图。...#####单元格 集合视图单元格是集合视图中最为重要的组成部分,没有样式和风格定义,单元格就是一个视图,可以在内部放置其他视图或控件。...UICollectionViewDataSource中提供的方法如下: //提供视图中节的个数,这个方法需要注意数据的行是否能与每一行有几个单元格整除,不能整除时要多加一行 - (NSInteger)numberOfSectionsInCollectionView...:(UICollectionView *)collectionView{ } 复制代码 //每一节有几个单元格 - (NSInteger)collectionView:(UICollectionView
从队列中排除,或者在必要时使用先前注册的nib或者class创造新的cell。...目标就是,能设为opaque的就全设为opaque! 4.避免过于庞大的XIB iOS5中加入的Storyboards(分镜)正在快速取代XIB。然而XIB在一些场景中仍然很有用。...Apple在相关文档中的记述是: 当你加载一个引用了图片或者声音资源的nib时,nib加载代码会把图片和声音文件写进内存。...这里我们用到的技巧就是模仿UITableView和UICollectionView的操作:不要一次创建所有的subview,而是当需要时才创建,当它们完成了使命,把他们放进一个可重用的队列中。...imageNamed的文档中这么说:这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。
避免过于庞大的XIB iOS5中加入的Storyboards(分镜)正在快速取代XIB。然而XIB在一些场景中仍然很有用。...当你加载一个引用了图片或者声音资源的nib时,nib加载代码会把图片和声音文件写进内存。在OS X中,图片和声音资源被缓存在named cache中以便将来用到时获取。...这里我们用到的技巧就是模仿UITableView和UICollectionView的操作: 不要一次创建所有的subview,而是当需要时才创建,当它们完成了使命,把他们放进一个可重用的队列中。...有两种实现方法: 创建并隐藏这个view当这个screen加载的时候,当需要时显示它; 当需要时才创建并展示。 每个方案都有其优缺点。...imageNamed的文档中这么说:这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。
如果你的集合视图控制器与nib文件或者Storyboard进行了绑定,那么他的视图将会从nib文件或者Storybaord中进行加载。...2.当从nib文件或者Storyboard中加载集合视图时,集合视图的数据源(Data source)和代理对象(Delegate Object)是从nib或者Storyboard中获取的。...布局会控制集合视图上的单元格(Cell)的排列方式。默认的是Flow Layout. ? 2....3.在代码中实现相应的代理,和TableView非常类似 (1) 返回Section个数的方法 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView...*)collectionView { return 1; } (2) 返回每个Section中Cell个数的方法 - (NSInteger)collectionView:(UICollectionView
UICollectionViewController的实现行为 如果你的集合视图控制器与nib文件或者Storyboard进行了绑定,那么他的视图将会从nib文件或者Storybaord中进行加载。...2.当从nib文件或者Storyboard中加载集合视图时,集合视图的数据源(Data source)和代理对象(Delegate Object)是从nib或者Storyboard中获取的。...布局会控制集合视图上的单元格(Cell)的排列方式。默认的是Flow Layout. ?...使用Storyboard创建一个CollectionViewController (1) 从控件库中拖拽出Collection View Controller ,你可以在Cell上添加一个ImageView...:(UICollectionView *)collectionView { return 1; } (2) 返回每个Section中Cell个数的方法 Objective-C - (NSInteger
iOS表视图高度自适应可以节省很多麻烦,尤其是涉及到复杂的业务逻辑时,今天尝试了使用Masonry和FDTemplatelayoutCell来布局表视图单元格,从而达到单元格高度自适应的效果,这里就总结了这其中使用的要点和注意问题...屏幕快照 2016-11-11 下午7.23.36.png 一、Masonry和FDTemplatelayoutCell实现自适应 Masnory帮助我们在单元格中设置约束,实现视图的自动布局,这里不再赘述...我们需要做的就是使用Masonry对视图单元格中的位于最底部的视图设置bottom约束,使其能够确定距离单元格最低端的距离。...使用的时候关键步骤包括: 1、注册表视图的单元格 这里分为NIb文件和普通类文件的单元格注册,我使用的是xib文件创建的单元格,代码如下: - (UITableView *)tableView{...类型单元格使用时的错误 因为我使用了xib文件来加载视图的,所以开始的时候写了如下方法获取单元格 //获取单元格 + (OrderTableViewCell *)getOrderTableViewCell
iOS中,UICollectionView和UITableView已经有系统默认选中颜色设置,但是只有无色,蓝色,灰色,三种颜色设置,如果想要其他的颜色效果,我们可以自由自定义设置。...前言 先观赏一下典型的UITableView控件案例 ? image.png 典型的UICollectionView控件案例 ?...image.png 1.单元格默认选中效果 系统默认单元格选中样式 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone ; //蓝色...(一) 通用方案: 假设你已经正确实现其他代理方法,需要在table或collection的返回cell的代理方法中作如下设置: cell.selectedBackgroundView = [[UIView...(二) 通用方案: [x] 在自己自定义的cell文件中重写如下方法: 示例: UITableViewCell.m - (void)setHighlighted:(BOOL)highlighted
领取专属 10元无门槛券
手把手带您无忧上云