1.UICollectionView中的Cell 有一個刪除的按鈕 ,按鈕的點(diǎn)擊事件是block,block的賦值一般是在CellForItem的DataSource方法中,此時注意不要在block中直接引用indexPath,而是直接在block帶參數(shù)Cell ?(更新:indexPath 可以加__block ?indexPath)
因?yàn)橛梅椒╠elegateItemsAtIndexPaths 后cell的indexPath會及時變,但此時block中的indexPath不會及時更新,調(diào)用reloadData也不好使
2.[self.allScrollView setContentOffset:CGPointMake(0,0)animated:YES]; 設(shè)置 ScrollView的ContentOffset的時候 有時候不會立即生效,可能需要調(diào)用[self.allScrollView layoutIfNeeded];
3.設(shè)置導(dǎo)航欄的背景色 可以用barTintColor和setBackGroundImage ?
去掉黑線 可以加一個lineView 高度為1 ?y坐標(biāo)為導(dǎo)航欄的height
4.關(guān)于UIScrollView的約束,比較特別本身的約束和別的View一樣,內(nèi)容的約束是根據(jù)subView的約束來確定contentView的frame和contentSize的,如果在xib中添加了一個UICollectionView,實(shí)際加載的時候 有多個可橫向滑動,注意 當(dāng)點(diǎn)擊進(jìn)入第一個UICollectionView的詳情頁返回的時候(導(dǎo)航控制器),UIScrollView 會重新計(jì)算約束為xib中的單個UICollectionView的約束,這個時候contentSize會變化,導(dǎo)致不能滑動,解決辦法是 用kvo監(jiān)聽contentSize的值 ,變的時候 重新設(shè)置一下,如果之前不在第一個view中,返回重新設(shè)置約束的時候會調(diào)到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里的接口一類的東西,某個類實(shí)現(xiàn)某個接口證明這個類實(shí)現(xiàn)了這個接口,擁有接口里定義的功能和屬性
delegate 是蘋果官方經(jīng)常使用的一種設(shè)計(jì)模式,該模式中用到了Protocol
當(dāng)一個類實(shí)現(xiàn)Protocol的時候,要注意分清Protocol的類型是delegate還是普通接口類型,正常的往往是功能性的,delegate類型的往往是回調(diào)型的