2011-10-19 85 views
0

這可能是相當基本的東西。我正在嘗試將AdWhirl實現到我的應用程序中,我已經成功完成了技術部分。當我加載我的應用程序時,添加加載,然後從頂部滑下來坐在屏幕的底部。不過,當我旋轉設備時,廣告會使用「精確」位置並移出屏幕。當廣告重新加載(每15秒刷新一次),廣告將移動到橫向窗口屏幕的底部。同樣,當從橫向旋轉回來時,廣告將其自身垂直排列在頁面中間(覆蓋內容),直到新廣告加載。我附上了許多照片,以一系列的方式顯示發生了什麼,所有這些照片至少相隔10秒(顯示「Hello」的測試廣告)。AdWhirl - 將視圖移動到中心屏幕旋轉

我的代碼來自Implementation文件包含在這篇文章的最後 - 對於不使用代碼格式,只是不希望在整個塊前面放置空格,我認爲它們都相對相關。它也可在貼斌:http://pastebin.com/mzavbj2L

山姆

對不起 - 它不會讓我上傳圖片。請給我一個下午的圖像。

+0

所以你意識到:http://meta.stackexchange.com/questions/17951/why-not-a-pm-system –

回答

0

感謝您的幫助 - 這很接近解決方案(今晚纔剛剛開始工作 - 大部分人都忘記了這麼做!)。在我改變我的.h後,我試圖撥打[adWhirlView adWhirlDidReceiveAd:(AdWhirlView *)adView]。儘管它在AdWhirlView類中定義,但這仍然會返回錯誤。作爲一個修復,我加了-(void) adWhirlDidReceiveAd:(AdWhirlView *)adView,然後每次調用框架時調用[self adWhirlDidReceiveAd:(AdWhirlView *)adView];

再次感謝 - 很高興它終於工作。

山姆

0

我建議處理willRotateToInterfaceOrientation:duration:方法或didRotateFromInterfaceOrientation:method中的旋轉。您將能夠確定您的新方向,新視圖的大小,然後將AdWhirl視圖的框架更改爲新位置。

但是,仔細觀察後,看起來您可能需要在文件中聲明變量*adView,以便您可以從旋轉方法訪問它。

一旦你這樣做,你可以設置你的新的幀,你在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和旋轉功能)。

+0

你好。我的頭文件的內容如下:http://pastebin.com/F8pnuFFj –

+0

如上所示,更改我的頭文件後,現在在提到adView時會出現以下錯誤:「adView」的本地聲明隱藏了實例變量。 –

+0

從您的.h文件判斷,您看起來像使用了放置在Interface Builder中的AdWhirl視圖。如果是這種情況,那麼您不應該在.m文件的第50行重新聲明您的adView對象。也就是說,在.m中使用'adView =',而不是另一個'AdWhirlView * adView = ...'。我對AdWhirl的界面生成器設置不太熟悉,但從代碼和XIB中刪除IB內容並在代碼中聲明它可能會更容易。另外,您的.h文件中有兩個AdWhirlView對象是否有原因? – aTotalStranger

相關問題