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

  1. Imageview用於Imageview
  2. 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





indexpath