Я не слишком знаком с Three20, но могу рассказать, как я обычно это делаю. Вы хотели бы написать этот код в adWhirlDidReceiveAd:
(при условии, что вы прочитали учебные пособия по настройке правильного делегата здесь и переопределению этого метода, и что ваше рекламное представление является подвидом текущего представления в контроллере навигации). *
Таким образом, в adWhirlDidReceiveAd:
вы хотите скользить вниз по своему контенту (это представление в вашем контроллере навигации) и вставлять полученное объявление.
- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView_ {
CGSize adSize = [adWhirlView_ actualAdSize];
CGRect newFrame = adWhirlView_.frame;
newFrame.size = adSize;
newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/ 2;
//Draw offscreen so that it can slide in properly
CGRect tempFrame = newFrame;
tempFrame.origin.y = -newFrame.size.height;
adWhirlView_.frame = tempFrame;
[UIView animateWithDuration:1.0 animations:^{
//Access frame of view controller in nav controller
CGRect viewFrame = [self.navigationController topViewController].view.frame;
// Decrease the height of the view by the height of the adwhirlView
viewFrame.size.height = [self.navigationController topViewController].view.frame.size.height -
adwhirlView_.frame.size.height;
// Shift view down to make room for the ad
viewFrame.origin.y = adwhirlView_.frame.size.height;
[self.navigationController topViewController].view.frame = viewFrame;
//Slide down the ad
adwhirlView_.frame = frame;
}];
}
Вы, вероятно, хотите проверить, уже появилось ли первое объявление, поэтому вы не выполняете слайд-переход каждый раз, когда появляется объявление.
Я почти уверен, что вы могли бы почистить код. У меня там тоже много всего, просто хотел, чтобы мои мысли были опущены, пока я мог.