So können Sie Anzeigen in einer Sammlungsansicht anzeigen

8

Ich versuche, einige Banner-Anzeigen zufällig in meiner collectionView hinzuzufügen.

Jede collectionView-Zelle wäre ein Basisbild (hier ein schwarzes Quadrat, um die Dinge einfacher zu machen), das dynamisch aus einem Array (sagen wir es ein wirklich langes Array und nennen wir es "longDataArray") würde, das ich aus dem Web bekommen würde. p>

Ich könnte einige Banner-Anzeigen zu meiner CollectionView hinzufügen, aber das Problem ist, dass es die Reihenfolge meines longDataArray bricht. Beispiel: Nur zum Testen, wenn ich ein Werbebanner in IndexPath 6 hinzufüge, wird das Werbebanner korrekt in indexPath 6 angezeigt, und ich kann die Breitenänderung für die Zelle verwalten, aber das Bild, das dem indexPath 6 für mein longDataArray entspricht, würde offensichtlich nie erscheinen.

Ich könnte es auch tun, indem ich mein longDataArray in zwei teile und dann mit den Abschnitten spiele: Abschnitt 0 = firstPartOfArray, Abschnitt 1 = Werbebanner und Abschnitt 2 = secondPartOfArray. Aber das erfordert viel Aufwand beim Erstellen verschiedener Arrays und Sektionen, nur um nur ein Werbebanner hinzuzufügen, und es ist offensichtlich nicht das, wonach ich suche.

Meine Frage ist also, wie würden Sie eine Banneranzeige in Ihrer collectionView hinzufügen (nur einen Abschnitt), aber die indexPath-Logik beibehalten?

Ich habe viel darüber gegoogelt und war überrascht, dass ich für dieses Problem keine Lösung finden konnte.

Habt ihr eine Idee?

Danke!

    
jellyfish6 28.03.2017, 06:37
quelle

3 Antworten

3

Hallo Ich habe eine CollectionView in der Tabellenzelle mit der gleichen Voraussetzung erstellt, Sie können meinen Code überprüfen.

%Vor%     
Mahesh kumar 19.01.2018 04:37
quelle
2
  

Also meine Frage ist, wie würden Sie Banner-Anzeige innerhalb Ihrer CollectionView (nur ein Abschnitt) hinzufügen, aber die IndexPath-Logik beibehalten?

Sie müssen nur den Indexpfad anpassen, um die Anzeigen zu berücksichtigen. Angenommen, Sie möchten, dass jede 15. Zelle eine Anzeige enthält. Lassen Sie uns hier die 1-basierte Arithmetik verwenden, um die Mathematik intuitiv zu machen. Die Zellen 1-14 erhalten nur ihren regulären Inhalt, Zelle 15 hat eine Anzeige, Zellen 16-29 erhalten den Inhalt für die Elemente 15-28, Zelle 30 erhält eine weitere Anzeige und so weiter. Die Methode -collectionView:cellForItemAtIndexPath: müsste also herausfinden, ob sich der Indexpfad auf eine Anzeigenzelle bezieht (in diesem Fall ist die 1-basierte Artikelnummer durch 15 teilbar) oder eine Inhaltszelle (jede andere Zelle). In letzterem Fall müsste auch die Artikelnummer angepasst werden, um den richtigen Inhalt zu erhalten.

%Vor%

Sie müssten auch in anderen Methoden, die sich mit Zellen befassen, z. B. -collectionView:numberOfItemsInSection: , entsprechende Berechnungen durchführen. Aus diesem Grund wäre es wahrscheinlich eine gute Idee, einige Hilfsmethoden zu schreiben, die die Anpassungen vornehmen würden.

    
Caleb 28.03.2017 07:08
quelle
2

Für UICollectionView müssen Sie zwei benutzerdefinierte UICollectionView

  1. Zelle1 ist für Imageview .
  2. Cell2 ist für die Banneranzeige.

In cellForItem

%Vor%

Implementieren Sie UICollection "Layout des Delegiertenflusses anzeigen" und verwenden Sie dies wie folgt

%Vor%

Um eine Anzeige in Ihrer App zu schalten, AdMob

    
dahiya_boy 28.03.2017 06:43
quelle