2014-01-23 75 views
5

我已經在我的應用程序中使用UIViewController上的新iOS 7屬性安裝了iAd橫幅,即canDisplayBannerAds。麻煩的是,我的視圖不再在iOS 7上正確調整大小。我使用autolayout,以防萬一您想知道。iOS 7的canDisplayBannerAds和旋轉?

縱向廣告橫幅出現在屏幕底部。在風景中,用戶界面不能正常更新,並保持與縱向屏幕一樣高。 (限制在屏幕底部的我的按鈕和廣告橫幅被截斷。)實質上,我的視圖邊界不再正確更新。

我試圖隱藏canDisplayBannerAds的禁用willRotateToInterfaceOrientation,然後重新啓用didRotateFromInterfaceOrientation中的屬性。沒有骰子。

我已經手動遍歷視圖層次結構來查找廣告橫幅並在其上調用sizeThatFits。我不確定自己是否做得對,所以這可能是答案。

我試過在啓用廣告之前明確地設置了成爲originalContentView的視圖上的自動調整遮罩。

取消我對canDisplayBannerAds的呼叫可減輕問題的所有症狀。

我錯過了一些明顯的東西嗎?是否有另一個屬性或設置,我應該切換?這是一個錯誤?

編輯:

我不是實際安裝的旗幟自己。只需將canDisplayBannerAds設置爲YES,iOS就可以調整我的整個層次結構,爲橫幅廣告騰出空間,然後自行安裝它。

+0

如果我有一些代碼,我將能夠修補... – Mike

+0

我可以看到如何添加iad橫幅嗎?如果使用addsubview,它不適用於自動佈局。你可以使用一個技巧。在您想要展示的故事板中添加一個uiview。然後subview橫幅this.and如果您張貼一些代碼,然後我可以檢查問題是 – BHASKAR

回答

0

你必須設置你的bannerview約束,如果你以編程方式添加像這樣

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:yourbannerview 
                 attribute:NSLayoutAttributeHeight 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeHeight 
                multiplier:0.5 
                 constant:0]]; 

等等.... :) 你可以按照這個鏈接

http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/

+1

他不是手動添加它,在iOS 7中,您可以使用canDisplayBannerAds來顯示廣告,如果它可用。 – Jacob

1

當設置「canDisplayBannerAds」來顯示廣告時,我已經看到其他職位談論未定義的行爲。

我認爲這是由於他們的視圖層次內的自定義視圖,你有什麼?

不過,在我看來,你碰到太多的麻煩,應該只需添加橫幅的老路上:

ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectZero]; 
adView.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierLandscape]; 
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierLandscape; 
[self.view addSubview:adView]; 

(對於橫向視圖,可以改變視圖類型將旋轉支持肖像)

我是否缺少明顯的東西?是否有另一個屬性或設置 ,我應該切換?這是一個錯誤?

沒有其他屬性,如果您只想通過設置該屬性來啓用廣告,則無法獲得委託調用。

你必須做的是,讓viewcontroller的MAIN視圖正確設置大小,(你可以用界面生成器測試)。

編輯:

這個人似乎是通過增加更多的約束canDisplayBannerAds Issue when Starting in Landscape Mode

你確定你的觀點是正確的已調整已經解決了嗎?您是否在空白項目中遇到與廣告相同的問題?

(我的建議仍然是,雖然是相同的,將它們添加手動給你更多的自由,只要你想,你可以把他們。我的應用程序顯示「縱向廣告」,而在景觀,例如。)

+0

你能提供一個關於那個未定義行爲的鏈接或某種文檔嗎? – Moshe

1

它是一個錯誤。得到了益民榮的解決方法。

如果添加在viewDidLoad以下兩行:

[self setCanDisplayBannerAds: YES]; 
[self setCanDisplayBannerAds: NO]; 

然後將這些廣告將在適當的應用程序設置,但不會顯示。它必須位於viewDidLoad之內,否則廣告將無法正確設置,您將得到佈局問題或生成的例外情況。

然後,您可以在準備就緒時致電[self setCanDisplayBannerAds: YES];。這並不一定在viewdidLoad,它可以在任何地方!適用於iOS 8,它也有相同的錯誤。