Estoy tratando de incorporar la implementación de la vista de la barra de pestañas iAdSuite en mi aplicación y veo el mismo problema en el paquete y en mi aplicación. Cuando aparece el anuncio, la vista de mi contenido se cambia de tamaño correctamente y el anuncio aparece correctamente. Cuando el anuncio desaparece, deja un espacio en blanco donde estaba ubicado. Sin embargo, he confirmado que mi vista de contenido vuelve a su altura original y se ajusta a sus límites originales. Simplemente no puede ver la parte donde estaba el anuncio. Me he asegurado de que cada vista tenga un layout IfNeeded y de todo lo demás que se me ocurra en vano. ¿Alguna idea?Error de iAdSuite deja espacio en blanco cuando desaparece el anuncio
Editar: he descubierto cuál es el problema. El ejemplo de Apple aparentemente agrega _bannerView a self.view cada vez que se llama a showBannerView: pero nunca elimina la vista. Eso aún no tiene mucho sentido ya que la vista de pancarta se mueve fuera de la pantalla, pero eliminarla resuelve el problema de espacio en blanco. Mi solución es la siguiente, pero si alguien tiene una forma más elegante, házmelo saber.
- (void)layoutAnimated:(BOOL)animated {
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
_bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
} else {
_bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape;
}
CGRect contentFrame = self.view.bounds;
contentFrame.origin = CGPointMake(0.0, 0.0);
CGRect bannerFrame = _bannerView.frame;
if (_bannerView.bannerLoaded) {
contentFrame.size.height -= _bannerView.frame.size.height;
bannerFrame.origin.y = contentFrame.size.height;
} else {
bannerFrame.origin.y = contentFrame.size.height;
}
[UIView animateWithDuration:animated ? 0.25 : 0.0 animations:^{
_contentView.frame = contentFrame;
[_contentView layoutIfNeeded];
_bannerView.frame = bannerFrame;
}
completion:^(BOOL finished) {
if (!_bannerView.bannerLoaded) {
[_bannerView removeFromSuperview];
_bannerView=nil;
}
}];
}
- (void)showBannerView:(ADBannerView *)bannerView animated:(BOOL)animated
{
_bannerView = bannerView;
if (![self.view.subviews containsObject:_bannerView])
[self.view addSubview:_bannerView];
[self layoutAnimated:animated];
}
- (void)hideBannerView:(ADBannerView *)bannerView animated:(BOOL)animated
{
[self layoutAnimated:animated];
}