AdWhirl - 在旋转时将视图移动到中心屏幕

时间:2011-10-19 16:03:05

标签: rotation adwhirl cgrect

这可能是非常基本的东西。我正在尝试将AdWhirl实施到我的应用程序中,我已经成功完成了技术部分。当我加载我的应用程序时,添加加载,然后从顶部向下滑动以位于屏幕的底部。但是,当我旋转设备时,广告使用“精确”位置并移出屏幕。当广告重新加载(每15秒刷新一次)时,广告会向上移动到横向窗口的屏幕底部。同样,当从横向旋转回来时,广告会在页面中间垂直对齐(覆盖内容),直到新广告加载为止。我附上了一系列照片,一系列显示发生了什么,按顺序排列并至少间隔10秒(显示“你好”的测试广告)。

来自实施文件的代码包含在本文末尾 - 抱歉不使用代码格式,只是不想在整个块前放置空格,我认为这些都是相对相关的。它也可以在粘贴箱中使用:http://pastebin.com/mzavbj2L

萨姆

抱歉 - 它不允许我上传图片。请寄给我一张图片。

2 个答案:

答案 0 :(得分:0)

我建议使用willRotateToInterfaceOrientation:duration:方法或didRotateFromInterfaceOrientation:method处理轮换。您将能够确定新的方向,视图的新大小,然后将AdWhirl视图的框架更改为新位置。

然而,在仔细观察之后,看起来您可能需要在*adView文件中声明.h变量,以便您可以通过旋转方法访问它。

执行此操作后,您可以像在viewDidLoad: method:

中一样设置新框架
CGSize adSize = [adView actualAdSize];
CGRect newFrame = adView.frame;
newFrame.size = adSize;
newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/ 2;
newFrame.origin.y = (self.view.bounds.size.height - adSize.height);
adView.frame = newFrame;
[UIView commitAnimations];

理想情况下,您可以将此代码移动到自己的方法中,这样您就可以在视图控制器代码中的任何位置调用它(例如viewDidLoad和旋转函数)。

答案 1 :(得分:0)

感谢您的帮助 - 它接近于一个解决方案(只是让它今晚正常工作 - 大部分都忘记了这样做!)。在我改变了我的.h之后,我试图打电话给[adWhirlView adWhirlDidReceiveAd:(AdWhirlView *)adView]。这会导致返回错误,即使它是在AdWhirlView类中定义的。作为修复,我添加了-(void) adWhirlDidReceiveAd:(AdWhirlView *)adView,然后每次框架旋转[self adWhirlDidReceiveAd:(AdWhirlView *)adView];时调用。

再次感谢 - 很高兴它终于工作了。

萨姆