iOS开发中的坑

1.UICollectionView中的Cell 有一个删除的按钮 ,按钮的点击事件是block,block的赋值一般是在CellForItem的DataSource方法中,此时注意不要在block中直接引用indexPath,而是直接在block带参数Cell  (更新:indexPath 可以加__block  indexPath)

因为用方法delegateItemsAtIndexPaths 后cell的indexPath会及时变,但此时block中的indexPath不会及时更新,调用reloadData也不好使

2.[self.allScrollView setContentOffset:CGPointMake(0,0)animated:YES]; 设置 ScrollView的ContentOffset的时候 有时候不会立即生效,可能需要调用[self.allScrollView layoutIfNeeded];

3.设置导航栏的背景色 可以用barTintColor和setBackGroundImage  

去掉黑线 可以加一个lineView 高度为1  y坐标为导航栏的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类型的往往是回调型的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,330评论 1 14
  • 一、cell点击背景色覆盖按钮的背景色 cell默认选中行的颜色是灰色的,如果cell上有按钮等控件,cell的灰...
    IrisZL阅读 2,662评论 1 0
  • 朋友圈看见的,女主人出去了一天,把狗留给她爸,回来狗就成这样了,哈哈哈哈哈哈哈哈哈哈哈…… 。
    等风来j阅读 1,475评论 0 0
  • 周末到了,到好哥们家吃饭,看综艺节目,总是花大半天时间,不就是注意力被哥们带着一起被收割了吗? 其实可以只把时间花...
    xll2068阅读 3,520评论 0 0
  • 晨读材料真是包罗万象,应有尽有,今天的内容提供用数学思维找到真爱,连爱情这样细腻绵长千变万化的情感都有概率范围,值...
    小小火红阅读 1,501评论 1 2