首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

新闻类App顶部菜单栏封装

概述 最近有一个需求,类似今日头条顶部的菜单栏。唯一区别是需要带可移动的下划线。网上查找资料,发现解决方案大部分是用UIScrollView实现。下方VC控制用UICollectionView。...这样可以解决问题,但是不完美,当标签很多的时候,这时候的UIScrollView上会有大量写死的Button,没有达到复用的目的。所以自己封装了一个空间。...在collectionView中,滑动cell的时候其实只是offset在变,cell的frame其实是不变的,collectionView其实也是个ScrollView,cell是加在scrollView...解决方案是,将cell的坐标转化到collectionView上,然后让下划线的中心点和cell在collectionView上中心点保持一致 if let currentCell = collectionView.cellForItem...初始化方法修改后记得在ScrollPageView中修改自定义VC的初始化。

1.1K20

抛弃UITableView,让所有列表页不再难构建

产品经理还要求内容默认显示一行,超过省略号表示,点击上去再全部显示,小明想这也容易,在FeedCellModel中加一个表示是否展开的bool量isExpand,然后didSelect代理方法中改变这个值并且...IGListKit IGListKit是Instagram出的一个基于UICollectionView的数据驱动UI框架,目前在github上有9k+ star,被充分利用在Instagram App...ListAdapter 适配器,它将collectionview的dataSource和delegate统一了起来,负责collectionView数据的提供、UI的更新以及各种代理事件的回调。...return ListSectionController() } ///数据为空时显示的占位视图 func emptyView(for listAdapter: ListAdapter)...Feed } } 这里把点击commentCell的删除按钮事件代理出来给CommentSectionController处理,在闭包里先对cellModels数组删除,然后调用IGListKit

1.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UICollectionView iOS 13以下删除动画crash

    问题反馈 线上突发一个Top1的crash告警,场景是UICollectionView在删除的时候触发。...然后在新界面触发某些业务逻辑,导致UICollectionView调用了deleteItemsAtIndexPaths进行cell的移除动画,此时就会产生crash。...UICollectionView内部有一个关于item数量的缓存,在首次调用numberOfItemsInSection:之后会缓存这个结果值,后续继续调用numberOfItemsInSection:...如果UICollectionView不在当前界面,此时这个缓存会失效,但此刻并不会马上调用dataSource的numberOfItemsInSection:。...之后执行); 然后在删除动画结束时候,UICollectionView继续询问dataSource当前有多少个item,我们会返回当前的数量19个; 于是UICollectionView就认为出现异常

    1.8K30

    iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

    iOS流布局UICollectionView系列一——初识与简单使用UICollectionView 一、简介         UICollectionView是iOS6之后引入的一个新的UI控件,它和...        在了解UICollectionView的更多属性前,我们先来使用其进行一个最简单的流布局试试看,在controller的viewDidLoad中添加如下代码:     //创建一个layout...//代理设置     collect.delegate=self;     collect.dataSource=self;     //注册item类型 这里使用系统的类型     [collect ...是iOS6.0之前的新类,因此这里统一了从复用池中获取cell的方法,没有再提供可以返回nil的方式,并且在UICollectionView的回调代理中,只能使用从复用池中获取cell的方式进行cell...,之后会调用上面方法的block回调 - (void)finishInteractiveTransition NS_AVAILABLE_IOS(7_0); //调用这个方法取消上面的布局动画设置,之后也会进行上面方法的

    3.1K20

    WWDC2016 Session笔记 - iOS 10 UICollectionView新特性

    针对self-sizing的改进 self-sizing的API在iOS8的时候被引进,iOS10中加入更多特性使cell更加容易去适配。...而且更重要的是,在屏幕外面等待加载的cell是整整一行!这一行的cell都已经加载完数据。这是UICollectionView在用户大幅度滑动时卡顿的根本原因。用专业的术语来说,掉帧。...当cell完全离开屏幕之后,就会调用didEndDisplayingCell方法。以上就是在iOS10之前的整个UICollectionViewCell的生命周期。...注意调用这个方法的时间,当cell还没有进入屏幕的时候,就已经提前调用这个方法了。...在iOS 10 当中,系统会把cell保持一段时间。在iOS中,如果用户把cell滑出屏幕后,如果突然又想回来,这个时候cell并不需要再走一段的生命周期了。

    2K30

    iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)

    上面这个效果就是我们今天博客中所实现的效果,而下方这两个效果是我们之前在聊UICollectionView以及自定义布局时所给出的相应的Demo, 下方的Demo所对应的源码也在Gitbub上进行了分享...数据源创建好后,在实例化CESelectThemeController对象时,将相应的数据源传给我们的控件即可。...UICollectionViewDataSource 下方就是该控件中使用UICollectionView的DataSource的代理方法。...手势开始时,我们调用longPressBegin()方法。手势改变时,我们调用longPressChange()方法。手势结束时,我们调用longPressEnd()。...调用该方法时,会执行DataSource代理中更新数据源的代理方法,也就是上面DataSource代理方法中最后一个更新数据源的方法。 ?

    1.6K50

    使用 UICollectionView 实现首页卡片轮播效果

    前言 今天跟大家来聊聊一个强大的 UI 控件:UICollectionView。...UICollectionView 是 iOS6 之后引入的一个新的 UI 控件,与 UITableView 有着很多相似的地方,在开发过程中我们都会选择使用它们俩来为 App 的整个页面进行布局,比如说淘宝的首页...;相比 UITbleView,UICollectionView 的功能比它要强大的多,它支持水平与垂直俩种方向的布局,开发者可以完全自定义一套 layout 布局方案,实现出意想不到的效果。...public var pageControlMargin: CGFloat = 10 // 分页控件大小,注意:当PageControlType不等于自定义类型时,只能影响当前分页控件的大小...,但是如果要正式在 app 中使用,并且达到很好的用户体验还是有很大的优化空间的。

    2.1K20

    iOS 封装跑马灯和轮播效果

    iOS UICollectionView实现跑马灯和轮播效果.gif 功能描述:WSL_RollView 是基于UICollectionView实现的支持水平和垂直两个方向上的的分页和渐进循环轮播效果...,可以设置时间间隔、渐进速率、是否循环、分页宽度和间隔,还支持高度自定义分页视图的控件。...自定义分页宽度:默认的分页宽度是UICollectionView的宽度,所以当分页宽度的不等于UICollectionView的宽度或分页间隔不等于0时会出现错误,这时就需要我们通过自定义UICollectionViewFlowLayout.../** 返回值决定了collectionView停止滚动时的偏移量 手指松开后执行 * proposedContentOffset:原本情况下,collectionView停止滚动时最终的偏移量 *...,前边尾首相连需要UICollectionView可见范围内的数据源后边的元素cell,后边首尾相连需要UICollectionView可见范围内的数据源前边的元素cell //获取首尾相连循环滚动时需要用到的元素

    4.2K40

    Swift 探索 UICollectionView 之 SupplementaryView 和 Decoration View

    中是否也能这样操作呢!...答案当然是肯定的,在 UICollectionView 控件中我们管这叫 Supplementary View, 翻译过来就是 "追加视图",那在 UICollectionView 中该怎么实现给每个...Sticky Section Header 是用追加视图实现的一种效果,具体表现为当 UICollectionView 滚动的时候,只要当前 section 的 headerView 向上滚动到最顶部的时候...: •开始交互•更新交互位置•结束交互•取消交互 在为 UICollectionView 添加手势后,根据手势提供的三种状态,分别调用上面的四个方法,来实现拖拽排序;另外,既然 Cell 的顺序会被调整...,只有再你自己慢慢实现后,你内心才会感慨 "哦, 原来这些 API 可以这样调用,原来这个东西是这样的啊"。

    2.2K10

    教你写个多表视图

    解决的办法是可以自己写个重用机制,不过这显然没必要,用自带重用机制的UICollectionView应该是个更好的选择。...(同理可自行添加 delegate),是 tableView 的数据源,可能大部分人习惯把控制器又当 dataSource 又当 delegate,不过我比较喜欢分开,就算是用同一个控制器,也会用extension..."] override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath...[indexPath.section] cell.tableView.reloadData() return cell } 在真实场景中一般是会在 dataSource 中放一个...这边 cell 是会被复用的,在翻到第三页时,会复用第一页的 cell ,第四页复用第二页的 cell……依此类推,所以需要给 cell 中的tableView调用 reloadData方法,不然就算改变了表中的数据

    1.3K30

    为 Spring Framework 和 Spring Boot 构建代码

    在幕后,它通过创建一个 Java InvocationHandler(一个 JDK 代理)或者更常见的方法是使用 CGLIB 之类的东西来创建一个扩展 Java 类的新类。这个类是你的类的子类。...Transactional public void updateCustomer ( long customerId, String name){       // .. . }}复制 您希望 Spring 在每次调用该方法时自动启动和停止事务...当 Spring 启动时,它会找到@Configuration类,调用所有用 注释的方法@Bean,将所有返回值存储在应用程序上下文中,并使它们可用于注入。...如果该方法似乎需要参数,它会查找任何其他返回该类型值的方法并首先调用它。然后将该值作为参数注入到方法中。如果它已经为其他注入调用了该方法,它只会重用已经创建的实例。...它可以使用测试来测试类路径上是否存在这些类,并推断出您想要一个嵌入式 SQLDataSource并且您想要一个JdbcTemplate与新生成的SQL连接的实例DataSource.

    66230

    Swift 自定义布局实现 Cover Flow 效果

    写在开头 大家早上好,今天我又给大家带来了一篇关于 UICollectionView 系列的文章,在上一篇文章中,我们实现了一个酷炫的瀑布流布局,带大家初步的了解了在 UICollectionView...的滚动方向是横向的 随着 UICollectionView 滚动,Cell 会自动的进行缩放,当 Cell 的中心点与 UICollectionView 的中心点重合时放大,偏离中心点时缩小 Cell...第二步,要实现 Cell 随 UICollectionView 滚动时具有缩放效果,就需要找一个合适的时机对 Cell 进行缩放,我的思路是先计算出 UICollectionView 整体滚动内容的中心点的...同学你讲的没错,但是当我们 Cell 的 width 加上边距等如果不占满 UICollectionView,那么就会出现一个问题,虽然你实现了分页效果,但是你的 Cell 在滚动的过程中是不会居中的....UICollectionView 停止滚动时,返回一个新的偏移点坐标,它有俩个参数,第一个参数 proposedContentOffset 指的是滚动将要停止时的偏移点坐标,第二个参数 velocity

    1.8K20

    iOS开发 MVVM+RAC 的使用Demo效果ReactiveCocoa简介Demo分析代码Demo地址

    主要是因为一直在跑面试。 终于还是在上海入职了! 由于项目原因最终还是入了MVVM+RAC的坑 下面是正题。 Demo效果 使用MVVM+RAC请求网络数据 ?...demo.gif ReactiveCocoa简介 在iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。...Block比传统回调函数有2点优势: 允许在调用点上下文书写执行逻辑,不用分离函数 Block可以使用local variables....代码 由于BlocksKit的使用,当我们写Delegate和Datasource时 就不用分离函数,整个逻辑都能凑在一起,比如这样定义一个collectionView: - (void)initStyle...{ UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout

    1.7K40

    iOS开发之窥探UICollectionViewController(五) --一款炫酷的图片浏览组件

    预加载布局方法, 该方法会在UICollectionView加载数据时执行一次,在该方法中负责调用一些初始化函数。具体如下所示。...其中transform的值是根据CollectionView的滚动偏移量来计算的,所以在滚动CollectionView时,Cell也会跟着旋转。...该方法返回YES意味着当滚动时,会再次执行上面(4)的方法,重新为每个Cell的属性赋值。所以重写下面的方法,并返回YES(下面的表达式也是一样的)才可以运动起来呢。...1 //当边界发生改变时,是否应该刷新布局。如果YES则在边界变化(一般是scroll到其他地方)时,将重新计算需要的布局信息。...Cell出现在屏幕的中心的位置,方法如下: 1 //修正Cell的位置,使当前Cell显示在屏幕的中心 2 - (CGPoint)targetContentOffsetForProposedContentOffset

    1.5K80

    仿淘宝类电商秒杀分页控件(附源码)

    ; /** 标题未选中时的颜色 */ @property (nonatomic, strong) UIColor *normalTitleColor; /** 标题选中时的颜色 */ @property...*/ @property (nonatomic, strong) UIColor *normalSubTitleColor; /** 副标题选中时的颜色 */ @property (nonatomic...实现: 知道了原理,那就开始构思: 1、我的实现思路是用UICollectionView来实现滚动菜单; 2、需要两个UICollectionView,UICollectionViewCell的文字内容一样...在遮罩下面,一个在遮罩上面; [self addSubview:self.collectionViewBottom]; [self addSubview:self.maskView]; [self.maskView...addSubview:self.collectionViewTop]; 4、在遮罩上面的UICollectionView超出遮罩的部分的内容不显示出来; self.maskView.clipsToBounds

    1.3K20

    iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局

    iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局 一、引言         前面的博客介绍了UICollectionView的相关方法和其协议中的方法,但对布局的管理类...二、将九宫格式的布局进行升级         在第一篇博客中,通过UICollectionView,我们很轻松的完成了一个九宫格的布局,但是如此中规中矩的布局方式,有时候并不能满足我们的需求,有时我们需要每一个...@property (nonatomic) UIEdgeInsets sectionInset; 这个属性可以设置分区的偏移量,例如我们在刚才的例子中添加如下设置:  layout.sectionInset...下面这两个方法设置分区的头视图和尾视图是否始终固定在屏幕上边和下边 @property (nonatomic) BOOL sectionHeadersPinToVisibleBounds NS_AVAILABLE_IOS...的相关属性UICollectionViewDelegateFlowLayout         上面的方法在创建FlowLayout时静态的进行设置,如果我们需要动态的设置这些属性,就像我们例子中的,每个

    2K30
    领券