ios uicollectionview ads indexpath

Cómo mostrar anuncios dentro de una vista de colección



uicollectionview ads (2)

Entonces mi pregunta es, ¿cómo agregaría un banner publicitario dentro de su collectionView (solo una sección), pero manteniendo la lógica indexPath?

Solo necesita ajustar la ruta del índice para tener en cuenta los anuncios. Por ejemplo, supongamos que quiere que cada 15 celdas contenga un anuncio. Usemos la aritmética basada en 1 aquí para hacer que la matemática sea intuitiva. Las celdas 1-14 obtendrán su contenido regular, la celda 15 tendrá un anuncio, las celdas 16-29 obtendrán el contenido para los artículos 15-28, la celda 30 recibirá otro anuncio, y así sucesivamente. Por lo tanto, su método -collectionView:cellForItemAtIndexPath: tendría que determinar si la ruta del índice se refiere a una celda del anuncio (en cuyo caso el número del artículo basado en 1 es divisible por 15) o una celda de contenido (cada dos celdas). En este último caso, también necesitaría ajustar el número de artículo para obtener el contenido correcto.

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` }

También tendría que hacer los cálculos correspondientes en otros métodos que tratan con celdas, como -collectionView:numberOfItemsInSection: Por esa razón, probablemente sería una buena idea escribir algunos métodos de utilidad que harían los ajustes.

Estoy intentando agregar algunos anuncios de banner al azar dentro de mi collectionView.

Cada celda de collectionView sería una imagen básica (un cuadrado negro aquí para hacer las cosas más fáciles) poblada dinámicamente de una matriz (digamos que es una matriz realmente larga y llámala "longDataArray") que obtendría de la web.

Me las arreglé para agregar algunos anuncios de banner a mi collectionView pero el problema es que está rompiendo el orden de mi longDataArray. Por ejemplo, para probar cuando estoy agregando un banner publicitario en indexPath 6, el banner publicitario se muestra correctamente en indexPath 6, y puedo administrar el cambio de ancho para la celda, pero la imagen correspondiente en el indexPath 6 para mi longDataArray obviamente nunca aparecerá.

También podría hacerlo dividiendo mi longDataArray en dos, y luego jugando con las secciones: sección 0 = firstPartOfArray, sección 1 = banner publicitario, y sección 2 = secondPartOfArray. Pero esto requiere un gran esfuerzo para crear diferentes matrices y secciones, solo para agregar un solo banner publicitario, y obviamente no es lo que estoy buscando.

Entonces mi pregunta es, ¿cómo agregaría un banner publicitario dentro de su collectionView (solo una sección), pero manteniendo la lógica indexPath?

Busqué mucho en Google y me sorprendió que no pudiera encontrar ninguna solución para este problema.

Tienen alguna idea ?

¡Gracias!


Para UICollectionView tienes dos UICollectionView personalizados

  1. Cell1 es para Imageview .
  2. Cell2 es para el anuncio de banner.

En cellForItem

if (indexPath.item == 6){ // dequeue your cell2 here return cell2 } else{ // dequeue your cell1 here return cell1 }

Implemente UICollection View Delegate Flow Layout y use así

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) } }

Para mostrar anuncios en su aplicación, AdMob