1.UICollectionView中的Cell 有一个删除的按钮 ,按钮的点击事件是block,block的赋值一般是在CellForItem的DataSource方法中,此时注意不要在block中直接引用indexPath,而是直接在block带参数Cell(更新:indexPath 可以加__blockindexPath)
【iOS开发中的坑】因为用方法delegateItemsAtIndexPaths 后cell的indexPath会及时变,但此时block中的indexPath不会及时更新,调用reloadData也不好使
2.[self.allScrollView setContentOffset:CGPointMake(0,0)animated:YES];
设置 ScrollView的ContentOffset的时候 有时候不会立即生效,可能需要调用[self.allScrollView layoutIfNeeded];
3.设置导航栏的背景色 可以用barTintColor和setBackGroundImage
去掉黑线 可以加一个lineView 高度为1y坐标为导航栏的height
4.关于UIScrollView的约束,比较特别本身的约束和别的View一样,内容的约束是根据subView的约束来确定contentView的frame和contentSize的,如果在xib中添加了一个UICollectionView,实际加载的时候 有多个可横向滑动,注意 当点击进入第一个UICollectionView的详情页返回的时候(导航控制器),UIScrollView 会重新计算约束为xib中的单个UICollectionView的约束,这个时候contentSize会变化,导致不能滑动,解决办法是 用kvo监听contentSize的值 ,变的时候 重新设置一下,如果之前不在第一个view中,返回重新设置约束的时候会调到UIScrollView的scrollViewDidScroll 的delegate方法中.
如果首页启动的时候 需要初始化ScrollView中的多个subVC比较耗时的话,可以放到后台初始化,添加child subView的时候 放到主线程
滑动的时候 的分页,大概是下面这样
int page=(self.ScrollView.contentOffset.x+self.ScrollView.bounds.size.width/2)/self.ScrollView.bounds.size.width;
if(page !=self.SelectedIndex){
}
5. Protocol和delegate完全不是一个东西,Protocol是类似于Java里的接口一类的东西,某个类实现某个接口证明这个类实现了这个接口,拥有接口里定义的功能和属性
delegate 是苹果官方经常使用的一种设计模式,该模式中用到了Protocol
当一个类实现Protocol的时候,要注意分清Protocol的类型是delegate还是普通接口类型,正常的往往是功能性的,delegate类型的往往是回调型的