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

《Motion Design for iOS》(三十八)

来看看我的app的动画构建它。 动画Interesting的Stories Into Position 当我的新闻app Interesting首次打开时,我会发起个网络请求来拉取最近的文章。...当请求返回时,我需要用UITableView来放置文章数据,每行篇文章。些app选择在数据返回时淡入列表,些会将行行行地滑动到位置上,而其他的则立即显示行,没有任何动画。...如果数据返回了并且我调用了[self.tableView reloadData],它会立即出现并且对用户可见。...然后我会调用[self.tableView reloadData]将数据加载到列表行中去,这时候所有的行都在它们正常的位置上,但因为整个列表透明度为0并且是隐藏的,屏幕上什么都看不见。...// 将列表变为不可见,重载数据 self.tableView.alpha = 0.0f; [self.tableView reloadData]; // 存储个时间变量,这样我就可以调整每行动画之间的延迟时间

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

客户端骨架屏详解

简单的说,在显示占位的时候,将tableView的代理设置为通过某个对象,这个对象根据cell的Idenfier创建cell添加占位显示。...关闭显示占位的时候,将代理tableView的代理切回ViewController,正常显示。 特点 不需手动写占位控件,不需处理圆角等问题,占位效果与实际控件布局致。...对于想要显示占位效果的View,需实现协议,在协议方法中返回SomoView列表。将这些SomoView添加到somoContainer,显示。...//停止动画,刷新数据 _mainTV.animatedStyle = TABTableViewAnimationEnd; [_mainTV reloadData]; _headView.animatedStyle...项目源码:https://github.com/ethanhua/Skeleton spruce-android Spruce 是个轻量级动画库,可帮助编排屏幕上的动画,该库同时还支持 iOS。

3.8K10

教你写个多表视图

把当前的控制器作为个父控制器,添加三个UITableViewController的实例作为子控制器,把父控制器中的 scrollView 作为容器,然后添加子控制器中的 tableView 作为子视图...然后要用 layout 控制布局,用最常用的 UICollectionViewFlowLayout 就行了,设置单元格的宽高,既然是翻页,宽肯定是跟屏幕等宽,高度就看你需求了,但是不要超过 collectionView...接下来我们要自定义个UICollectionViewCell,让它包含tableView: class HomeCollectionViewCell: UICollectionViewCell...// Configure the cell cell.dataSource.cellData = tableViewDataList[indexPath.section] cell.tableView.reloadData...这边 cell 是会被复用的,在翻到第三页时,会复用第页的 cell ,第四页复用第二页的 cell……依此类推,所以需要给 cell 中的tableView调用 reloadData方法,不然就算改变了表中的数据

1.3K30

iOS 开发:『Runtime』详解(二)Method Swizzling

方案 B 和方案 A 的最大不同之处在于使用了函数指针的方式,使用函数指针最大的好处是可以有效避免命名错误。...,可以参考这篇博文: 小生不怕:iOS xib文件根据屏幕等比例缩放的适配 ---- 4.3 处理按钮重复点击 需求:避免个按钮被快速多次点击。...第种:刷新数据后进行判断 这应该是通常的做法。当返回数据,刷新 TableView、CollectionView 时候,进行判断,如果数据为空,则加载占位图。...以 TableView 为例: 为 TableView 建立个 Category,Category 中添加刷新回调 block 属性、占位图 View 属性。...在分类中实现个自定义的 xxx_reloadData 方法,在其中添加判断是否为空,以及加载占位图、隐藏占位图的相关代码。

1.9K31

iOS-UI控件之UITableView(四)- cell数据刷新

TableView- 数据刷新 数据刷新 添加数据 删除数据 更改数据 全局刷新方法(最常用) [self.tableView reloadData]; // 屏幕上的所有可视的cell都会刷新遍 局部刷新方法...{ return @"删除"; } 左滑出现N个按钮 需要实现tableView的代理方法 /** * 只要实现了这个方法,左滑出现按钮的功能就有了 (旦左滑出现了N个按钮,tableView...就进入了编辑模式, tableView.editing = YES) */ - (void)tableView:(UITableView *)tableView commitEditingStyle:...setEditing:YES animated:YES]; // 默认情况下,进入编辑模式时,左边会出现排红色的“减号”按钮 在编辑模式中多选 // 编辑模式的时候可以多选 self.tableView.allowsMultipleSelectionDuringEditing...= YES; // 进入编辑模式 [self.tableView setEditing:YES animated:YES]; // 获得选中的所有行 self.tableView.indexPathsForSelectedRows

1.7K60

UITableView增加和删除、移动

复习下: 1、在控制器上添加个UITableView,  暂时该UITableView控件变量名命名为为tableView, 设置控件代理,实现控制器的UITableViewDataSource,...reloadData]; //删除后全部重新加载 [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight...];//只刷新删除行部分(性能更好些) } } 这里还有个代理方法: - (UITableViewCellEditingStyle)tableView:(UITableView *...)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;当没有实现此方法时,默认是返回 UITableViewCellEditingStyleDelete...枚举,要想实现单元格增加,就要实现此方法,并且返回UITableViewCellEditingStyleInsert枚举 然后还要设置tableView控件属性 editing 为YES, 完整代码如下

1.7K30

你可能需要为你的 APP 适配 iOS 11

的contentOffset变化后执行的,异常动画发生在tableView reloadData之后,也就是说tableView reloadData之后,tableView的contentOffset...UIScrollView and UITableView的新特性 Scroll Views 如果有些文本位于UI滚动视图的内部,包含在导航控制器中,现在般navigationContollers会传入个...就不会次性计算所有的cell的高度了,只会计算当前屏幕能够显示的cell个数再加上几个,滑动时,tableView不停地得到新的cell,更新自己的contenSize,在滑到最后的时候,会得到正确的...iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) self.tableView.estimatedRowHeight = 0; self.tableView.estimatedSectionHeaderHeight...并且返回数组的第个元素在UITableViewCell的最右侧显示,最后个元素在最左侧显示。

1.6K60

【IOS开发基础系列】UISearch专题

1 UISearchBar         UISearchBar是由两个subView组成的,个是UISearchBarBackGround,另个是UITextField. 1.1 代码示例 1....UISearchBarBackGround,另个是UITextField.要IB中没有直接操作背景的属性。...orangeColor];     //设置开始搜索时背景显示与否(很重要)      searchVC.dimsBackgroundDuringPresentation = NO;      //适应整个屏幕... reloadData]; } 3.1.6 5)设置UITabelViewController中的其它 #pragma mark - Table view data source //设置有多少个分区...(当搜索内容为空时,返回的时所有数据,如果搜索内容为空,返回空时,需要进行其它修改操作.) 4 开发技巧 4.1 兼容IOS7、8结合自定义导航条使用 4.1.1 核心思路         虽然UISearchController

31320

你可能需要为你的 APP 适配 iOS11

前言 前几天发现在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在tableView reloadData...之后,也就是说tableView reloadData之后,tableView的contentOffset发生了几次变化。...就不会次性计算所有的cell的高度了,只会计算当前屏幕能够显示的cell个数再加上几个,滑动时,tableView不停地得到新的cell,更新自己的contenSize,在滑到最后的时候,会得到正确的...因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。...并且返回数组的第个元素在UITableViewCell的最右侧显示,最后个元素在最左侧显示。

2.4K00

iOS-TableView数据源代理

TableView 是 iOS 应用程序中非常通用的组件,几乎每个界面都有TableView,而我们许多的代码都和TableView有关系,比如数据展示、更新TableView些响应选择事件等...,而这些大多都会通过其代理函数来实现,所以在VC中我们通常需要实现大量TableView的代理函数,如下面这样 func tableView(_ tableView: UITableView, heightForHeaderInSection...(at: indexPath, animated: true) } 如果上面的代码在每个VC中都实现次,不仅写了很多的重复的代码,还增加了VC的复杂度,所以我在想能不能有个统的代理类,我们的TableView...delegate.datas = [[Model1(),Model1(),Model1()],[Model2(),Model2(),Model2(),Model2()]] // 4.刷新视图 tableView.reloadData...cell注册的identifier即可 头部高度:header的高度,可以是定值,也可以根据section来动态返回 尾部高度:footer的高度,可以是定值,也可以根据section来动态返回 行高:

88610

UITableView进阶:常用代理方法及属性1. 常用属性2. 进阶的常用代理方法

如果有幸去瞄眼的,可以通过文章下面的拓展链接传送门去看。& 今天重点聊聊UITableView中经常使用到的代理方法及属性。本文不是工具箱,所以不会将所有的属性和方法都写下来噢。...太完整的也记不住,真的是要用的时候临时翻下.h文件看看也行。 1....indexPathsForSelectedRows:这里返回的是包含了indexPath的数组噢,因为要考虑到是多行选中的情况。...这个属性也是个数组,它装着目前屏幕上可见的cell的indexPath集合。在做两级菜单联动的时候可能会需要用到。 2....]; // 刷新全部表格数据,如果能够准确确定被修改的数据行,就不要用此方法 [tableView reloadData]; #4. tableViewCell排序 ##4.1 cell交换排序 -

1K20

你可能需要为你的APP适配iOS11

前言 前几天发现在做的APP在iOS11系统上动画有异常,在其他系统的设备上都是正常的,动画的操作是观察tableView的contentOffset变化后执行的,异常动画发生在tableView reloadData...之后,也就是说tableView reloadData之后,tableView的contentOffset发生了几次变化。...就不会次性计算所有的cell的高度了,只会计算当前屏幕能够显示的cell个数再加上几个,滑动时,tableView不停地得到新的cell,更新自己的contenSize,在滑到最后的时候,会得到正确的...因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。...并且返回数组的第个元素在UITableViewCell的最右侧显示,最后个元素在最左侧显示。

81020
领券