1.UICollectionView中的Cell 有一個刪除的按鈕 ,按鈕的點擊事件是block歇终,block的賦值一般是在CellForItem的DataSource方法中颜及,此時注意不要在block中直接引用indexPath辨液,而是直接在block帶參數(shù)Cell ?(更新:indexPath 可以加__block ?indexPath)
因為用方法delegateItemsAtIndexPaths 后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è)置導航欄的背景色 可以用barTintColor和setBackGroundImage ?
去掉黑線 可以加一個lineView 高度為1 ?y坐標為導航欄的height
4.關(guān)于UIScrollView的約束乏盐,比較特別本身的約束和別的View一樣佳窑,內(nèi)容的約束是根據(jù)subView的約束來確定contentView的frame和contentSize的,如果在xib中添加了一個UICollectionView父能,實際加載的時候 有多個可橫向滑動神凑,注意 當點擊進入第一個UICollectionView的詳情頁返回的時候(導航控制器),UIScrollView 會重新計算約束為xib中的單個UICollectionView的約束,這個時候contentSize會變化溉委,導致不能滑動鹃唯,解決辦法是 用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里的接口一類的東西趴酣,某個類實現(xiàn)某個接口證明這個類實現(xiàn)了這個接口梨树,擁有接口里定義的功能和屬性
delegate 是蘋果官方經(jīng)常使用的一種設(shè)計模式,該模式中用到了Protocol
當一個類實現(xiàn)Protocol的時候岖寞,要注意分清Protocol的類型是delegate還是普通接口類型抡四,正常的往往是功能性的,delegate類型的往往是回調(diào)型的