1.drawRect 方法
初始化不走 在[self addSubView: ]才走景埃,與單例 或者懶加載有沖突媒至,沒走一次[self addSubView: ]顶别,視圖重新創(chuàng)建一次,造成內容復用拒啰,并且這也會影響collectionview的視圖驯绎,造成collectionview布局錯誤
但是在封裝視圖時,初始化之后谋旦,然后傳遞的參數(shù)剩失,可以通過這個方法修改,作為視圖封裝是非常好用的方法
所以使用時要注意情況
2.UIWindow的使用
防止重復創(chuàng)建册着,加載window上的視圖拴孤,需要寫成懶加載
3.collectionView使用遇到的問題
1)多組內容時中,當其中一個組的內容為空時甲捏,需要將其itemSize的尺寸設置為 CGSizeMake(screen_width,0.1);
2)collectionView系統(tǒng)沒有提供類似于TableivewHeaderView演熟,只有每組上方的headView,而且headview中的視圖必須在collectionview初始化中注冊
3)書寫headerView和footer時,需要:
if (kind == UICollectionElementKindSectionHeader) {
UICollectionReusableView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"headerView" forIndexPath:indexPath];
for (UIView *view in headerView.subviews) {
[view removeFromSuperview];
}
return headerView;
}else if (kind == UICollectionElementKindSectionFooter){
UICollectionReusableView *footerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footerView" forIndexPath:indexPath];
for (UIView *view in footerView.subviews) {
[view removeFromSuperview];
}
return footerView;
}else{
return nil;
}
此功能必須先判斷條件司顿,然后再去創(chuàng)建headerView和footerView芒粹,如果不這樣做,在iOS 11以下的系統(tǒng)會Crash大溜,在使用headerView和Footerview還需要做防止復用操作化漆,
4.tableview使用遇到的問題
有多組內容時,為了能夠準確獲取組頭的尺寸钦奋,需要實現(xiàn)每組的footer協(xié)議座云,并設置footer的高度設為0.01
5.狀態(tài)欄空白不能占據(jù)的問題
if (@available(iOS 11.0, *)) {
UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
// Fallback on earlier versions
self.automaticallyAdjustsScrollViewInsets = NO;
}
注意內容:
以上方法需要寫在根視圖下疙赠,例如某個視圖是在自定義tabbar下的一個模塊,那么上述屬性需要放在自定義的tabbar類中才可以使的自定義tabbar下的每一個模塊使用上述屬性