Эффективный способ реализации iAd
Я использую простой способ настройки iAd... но каждый раз, когда iAd анимируется, моя игра SpriteKit начинает зависать. Мне было интересно, если есть более эффективный способ?
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
[UIView animateWithDuration:0.1 animations:^(void) {
banner.alpha = 1;
}];
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
[UIView animateWithDuration:0.1 animations:^(void){
banner.alpha = 0;
}];
}
1 ответ
Вот как я реализовал iAd в своем недавнем приложении, у меня все работает нормально. Никаких лагов и ничего. попробуй это.
- (void)viewDidLoad {
_bannerView = [[ADBannerView alloc] initWithFrame:CGRectZero];
_bannerView.delegate = self;
[self.view addSubview:_bannerView];
[self layoutAnimated:NO];
}
- (void)layoutAnimated:(BOOL)animated
{
CGRect contentFrame = self.view.bounds;
CGRect bannerFrame = _bannerView.frame;
if (_bannerView.bannerLoaded)
{
contentFrame.size.height -= _bannerView.frame.size.height;
bannerFrame.origin.y = contentFrame.size.height;
} else {
contentFrame.size.height = self.view.bounds.size.height;
bannerFrame.origin.y = contentFrame.size.height;
}
[UIView animateWithDuration:animated ? 0.25 : 0.0 animations:^{
self.movieDetailTableView.frame = contentFrame;
[self.movieDetailTableView layoutIfNeeded];
_bannerView.frame = bannerFrame;
}];
}
#pragma mark - Delegates
- (void)bannerViewDidLoadAd:(ADBannerView *)banner
{
[self layoutAnimated:YES];
}
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave
{
NSLog(@"Banner view is beginning an ad action");
BOOL shouldExecuteAction = YES; // your app implements this method
if (!willLeave && shouldExecuteAction)
{
// insert code here to suspend any services that might conflict with the advertisement
}
return shouldExecuteAction;
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
[self layoutAnimated:YES];
}