新的一種界面布局

1.眾所周知,移動端的開發界面的布局是一種很基本很基礎的技能,有沒有一種良好的布局習慣決定了你業務實現的方便與開發周期的縮短;我也是來到新的工作環境中開始學會了一種新的界面布局方式。

2.新的界面布局詳解:

(1).首先,定義一個UICollectionViewController的基類,在基類的.h文件中,向外公開一個表數據的數組data,并提供相關注冊cell、header、footer、刷新、清除的接口。在.m中實現collectionview的代理方法,return data.count、return data[section].row;以下著重介紹下cellforitem的代理方法;

(2).獲取對應section的model,獲取對應的cell,實現協議方法,代碼如圖:


ZLCellInfoModel *cellModel = _cellData[indexPath.section];? ? UICollectionViewCell*cell =

[collectionView dequeueReusableCellWithReuseIdentifier:cellModel.cellName

forIndexPath:indexPath];

[cell updateCellWithModel:cellModel.cellData[indexPath.row]

indexPath:indexPath];

if ([cell respondsToSelector:@selector(setCellDelegate:)]) {

[cell setCellDelegate:self];

}


3.以下我會以一個控制器的創建為例具體解釋下新的界面布局

(1)假設控制器的界面上有一個滾動的banner圖,有一個活動小框,有一個列表,有一個collectionview的視圖,下面該如何布局呢

(2)創建對應幾個視圖的model。如例中,創建4個model,每一個model中在創建的時候,將對應的cellname,cellsize,headername,headersize等一系列屬性添加進去,然后創建幾個對應網絡層的任務,進行每一個cell的數據加載

(3).在數據的加載中,用到了gcd中的dispatch_group-async,其目的在于使用dispatch_group_notify的屬性,可以將提交到dispatch_queue_t 中的任務執行完畢后統一在notify中執行,一行代碼解決所有沖突與煩惱,所以將數據的加載放在group中,使用dispatch_group_create()創建group,可以大大提高訪問速度。

(4).對應的加載任務訪問成功后,會將對應的model加入到控制器的arraydata中,將訪問到的數據加入到model的對外數據接口中,然后刷新控制器的collectionview如下面代碼:


dispatch_group_enter(group);

WEAKSELF

self.getADListTask =

[ZLHomeRequestManager getADListWithType:2 completedBlock:^(NSMutableArray *dataArray, NSError *error) {

//先清除之前的數據

[weakSelf clearCellData:weakSelf.adCellModel];

if ([dataArray count]) {

NSMutableArray *imageArray = [NSMutableArray array];

for (ZLADInfo *adInfo in dataArray) {

[imageArray addObject:adInfo.imgurl];

}

weakSelf.adList = dataArray;

[weakSelf.adCellModel.cellData addObject:imageArray];

[weakSelf.cellData insertObject:weakSelf.adCellModel atIndex:0];

}

[weakSelf reloadCollectionView];

dispatch_group_leave(group);

}];


(5)在對應的cell中,更新cell的布局。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容