ios - uicollectionviewflowlayout - uicollectionview教學
如何在集合視圖中顯示廣告 (2)
所以我的問題是,你如何在你的collectionView中添加橫幅廣告(只有一個部分),但保持indexPath邏輯?
您只需調整索引路徑即可考慮廣告。 例如,假設您希望每個第15個單元格包含一個廣告。 我們在這裡使用基於1的算術來使數學直觀。 細胞1-14只會得到他們的常規內容,細胞15會有一個廣告,細胞16-29將獲得項目15-28的內容,細胞30將獲得另一個廣告,等等。 因此,您的-collectionView:cellForItemAtIndexPath:
方法需要確定索引路徑是指廣告單元(在這種情況下,基於1的項目編號可以被15整除)或內容單元(每隔一個單元格)。 在後一種情況下,還需要調整項目號以獲得正確的內容。
NSInteger item = indexPath.item + 1; // switch to 1-based numbering
if (item % 15 == 0) {
// we have an ad cell, so return a cell configured with an ad
}
else {
item = item - (item / 15); // subtract the ad cells
item -= 1; // switch back to 0-based indexes
// return a cell configured with the data at index `item`
}
您還必須在處理單元格的其他方法中進行相應的計算,例如-collectionView:numberOfItemsInSection:
出於這個原因,編寫一些可以進行調整的實用方法可能是一個好主意。
我正在嘗試在我的collectionView中隨機添加一些橫幅廣告。
每個collectionView單元格將是一個基本的圖像(這裡的黑色方塊使事情變得更容易)動態地從一個數組(假設這是一個非常長的數組,並稱為“longDataArray”),我將從網上獲得。
我可以設法添加一些橫幅廣告到我的collectionView,但問題是,它打破了我的longDataArray的順序。 例如,為了測試在indexPath 6添加廣告橫幅的時間,廣告橫幅正確地顯示在indexPath 6,我能夠管理單元格的寬度變化, 但是 indexPath對應的圖像6我的longDataArray顯然永遠不會出現。
我也可以把我的longDataArray分成兩部分,然後使用部分:section 0 = firstPartOfArray,section 1 = ad banner,section 2 = secondPartOfArray。 但是,這需要很大的努力來創建不同的數組和節,只是添加一個廣告橫幅,顯然不是我正在尋找的。
所以我的問題是,你如何在你的collectionView中添加橫幅廣告(只有一個部分),但保持indexPath邏輯?
我搜索了很多關於這個的內容,並且很驚訝我不能為這個問題提出任何解決方案。
你們有什麼想法嗎?
謝謝!
對於UICollectionView
你必須有兩個自定義的UICollectionView
-
Imageview
用於Imageview
。 - Cell2用於橫幅廣告。
在cellForItem
if (indexPath.item == 6){
// dequeue your cell2 here
return cell2
}
else{
// dequeue your cell1 here
return cell1
}
實現UICollection查看委託流佈局並像這樣使用
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize{
if (indexPath.item == 6){
return CGSizeMake(60,60)
}
else{
return CGSizeMake([[UIScreen mainScreen] bounds].size.width, 60.0)
}
}
要在您的應用中展示廣告,請使用AdMob