Jon*_*an. 2 iphone animation objective-c uiview iad
我在屏幕底部动画(0.5秒)一个iAd横幅,然后在完成后从它的超视图中删除它.
只要我有动画,iAd阻碍收益会出现在控制台中:
ADBannerView:警告横幅视图包含广告但可能会被遮挡.此消息仅在每个横幅视图中打印一次.
代码很简单:(动画块中的行是问题)
[UIView animateWithDuration:0.5 animations:^{
self.adBannerView.frame = CGRectSetY(self.adBannerView.frame, viewHeight);
} completion:^(BOOL finished) {
[self.adBannerView removeFromSuperview];
}];
Run Code Online (Sandbox Code Playgroud)
如果我忽略该消息会影响我的应用收到的广告数量或任何内容吗?
这也发生在我从-(void)bannerViewDidLoadAd:(ADBannerView *)banner委托方法动画广告的外观时,我只能通过使用该will方法的变体来保持动画的同时停止显示警告.
如何在屏幕上和屏幕外设置iAds动画?
我有一段时间想知道同样的事情.我相信我已经想出了一个技巧,因为当我这样做时,我没有收到任何警告.
这是我的视图层次结构:
UIView (same size as your iAd)
|_ iAd (make sure to pin the height and width if using iOS 6 auto layout)
|_ UIView (I create this dynamically and use it's presence to determine whether I should show or hide the iAd from the delegate)
Run Code Online (Sandbox Code Playgroud)
下面的代码操作我在Interface Builder中设置的自动布局约束.如果您没有使用自动布局,则必须更改触发动画的内容.
- (void)hideAdBanner {
if (!__adBannerReverseSideView) {
__adBannerReverseSideView = [[UIView alloc] initWithFrame:__adBannerView.frame];
__adBannerReverseSideView.backgroundColor = [UIColor blackColor];
__adBannerReverseSideView.opaque = YES;
[UIView transitionFromView:__adBannerView toView:__adBannerReverseSideView duration:0.3
options:UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionCurveEaseInOut
completion:^(BOOL finished) {
[UIView animateWithDuration:0.3 animations:^{
__adBannerBottomConstraint.constant += __adBannerContainerView.frame.size.height;
[self.view layoutIfNeeded];
}];
}];
}
}
- (void)showAdBanner {
if (__adBannerReverseSideView) {
[UIView animateWithDuration:0.3
animations:^{
__adBannerBottomConstraint.constant -= __adBannerContainerView.frame.size.height;
[self.view layoutIfNeeded];
}
completion:^(BOOL finished) {
[__adBannerView setNeedsLayout];
[UIView transitionFromView:__adBannerReverseSideView toView:__adBannerView duration:0.3
options:UIViewAnimationOptionTransitionFlipFromTop | UIViewAnimationOptionCurveEaseInOut
completion:^(BOOL finished) {
[__adBannerReverseSideView removeFromSuperview];
__adBannerReverseSideView = nil;
}];
}];
}
}
Run Code Online (Sandbox Code Playgroud)
隐藏代码将AD横幅转换为"反向"视图.您可以使用options参数更改动画类型.
节目代码以另一种方式转换(从"反向"视图转换到AD横幅).所有动画都发生在超视图上,该视图与AD横幅相同.这样您的整个视图就不会生成动画.
将iAd留在superview中,不要删除它.这可能是警告的根本原因,但我不确定.
那么这是我的AD代表方法:
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
[self hideAdBanner];
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
[self showAdBanner];
}
Run Code Online (Sandbox Code Playgroud)
不要因为没有检查错误变量而杀了我.我还没有开始编写代码.
关于在iOS 6自动布局中固定广告横幅视图的高度和宽度,如果在iAd动画回原位时没有,左上角将向下移动,向右移动高度和宽度的一半它的超级视图每次回到视图中.:) 好玩的东西.
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |