我有一个带视图和导航栏的导航控制器。 我想在导航栏和视图之间插入AdView(我正在使用AdWhirl)。 AdView应向下滑动并向下推视图(视图必须自行调整大小,而不是在屏幕外显示)。
如果这很重要,我正在与Three20合作。
有什么想法吗?
谢谢!
答案 0 :(得分:3)
我对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;
}];
}
您可能想要检查第一个广告是否已经进入,因此每次广告进入时都不会进行幻灯片切换。
我很确定你可以清理代码我也有很多,只是想尽可能地把我的想法放下来。