iOS7 Auto-Layout, Größe anzeigen und iAds anzeigen

8

Ich verwende Auto-Layout in meinem iOS 7-Projekt mit der folgenden Ansichtshierarchie

Hauptansicht
-Containeransicht
--- Schaltfläche
--- Schaltfläche
--- Bildansicht
-Banner-Ansicht (iAd-Banner-Ansicht)

Die Hauptansicht und die Containeransicht sind die volle Breite und Höhe des Bildschirms. Ich habe horizontale und vertikale Platzbeschränkungen in der Containeransicht, die an der Hauptansicht haften (Höhe und Breite des Bildschirms). Außerdem sind die Teilansichten der Containeransicht auf die Schaltfläche der Ansicht mit einem 20px-Leerzeichen beschränkt.

Mein Problem tritt auf, wenn die Banneransicht schließlich gefüllt und am unteren Bildschirmrand platziert wird. Dann wird die Höhe der Banneransicht von der Rahmenhöhe subtrahiert, um Platz für die Banneransicht zu schaffen. (Code wird unten verwendet) Das ideale Ergebnis ist die Containeransicht, um die Höhe und die Aktualisierung der Subviews auf Basis dieser neuen Höhe zu subtrahieren. Aber was passiert, ist, dass die iAD Banneransicht die Ansicht wie in der Abbildung gezeigt überlagert >

Code für BannerViewDidLoadAd:

%Vor%

Bild von iAd überlagert die Containeransicht und ihre SubViews

    
William Smith 30.11.2013, 06:12
quelle

2 Antworten

8

Nachdem Sie die Banneransicht im Code erstellt (und als Unteransicht der Hauptansicht hinzugefügt haben), sollten Sie eine Abstandseinschränkung der Länge 0 zwischen dem unteren Rand der Containeransicht und dem oberen Rand der Banneransicht (der Banneransicht) hinzufügen würde auch Einschränkungen für die beiden Seiten der Hauptansicht und eine Höhenbeschränkung benötigen). Die Containeransicht sollte für alle vier Kanten der Hauptansicht Längenbeschränkungen von 0 aufweisen. Sie sollten ein IBOutlet für diese untere Integritätsregel erstellen und den Konstantenwert dieser Integritätsbedingung um einen Betrag animieren, der der Höhe der Banneransicht entspricht (so wird sie verkleinert und die Banneransicht wird aufgrund der 0-Längen-Vertikalabstandsbeschränkung mit nach oben verschoben ). Wenn also der Ausgang der unteren Einschränkung bottomCon genannt wurde und die Höhe der Banneransicht 100 Punkte betrug, würden Sie folgendermaßen animieren:

%Vor%

Sie müssen die Ansicht nicht ein- und ausblenden, da Sie sie ohnehin zunächst vom unteren Bildschirmrand ablegen. Stellen Sie außerdem sicher, dass Sie direkt nach dem Erstellen der Banneransicht [bannerView setTranslatesAutoresizingMaskIntoConstraints:NO] aufrufen, oder Sie erhalten beim Ausführen der App automatische Layoutfehler.

    
rdelmar 30.11.2013, 06:42
quelle
3

Die Antwort von rdelmar war genug für mich, damit das funktioniert, aber ich werde ein paar Dinge hinzufügen. Wenn das automatische Layout aktiviert ist, muss die Größe des Banners nicht mit setAutoresizingMask festgelegt werden: UIViewAutoresizingFlexibleWidth (und currentContentSizeIdentifier ist in iOS 6 veraltet). Erstellen Sie einfach das Banner-Objekt und fixieren Sie es dann mit der Prozedur, die von rdelmar beschrieben wird, und das automatische Layout kümmert sich um die horizontale Größe.

Hier sind die Einschränkungen, die ich verwendet habe:

%Vor%

Ich hatte Bedenken, eine Höhenbeschränkung festzulegen, da sich die Höhe des Banners je nach Plattform und / oder Ausrichtung ändert. Aber es scheint keinen Unterschied zu machen, welchen Wert ich für die Höhenbeschränkung gesetzt habe - das Banner wird immer in der richtigen Höhe angezeigt, also setze ich es nicht einmal in Szene. Ich nehme das an, weil die Größe der Werbebanner inhärent ist.

    
Bob 02.01.2014 20:07
quelle

Tags und Links