我使用以下代码添加了 MoPub 横幅广告:
self.adView.delegate = self
self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
screenWidth, MOPUB_BANNER_SIZE.height)
self.view.addSubview(self.adView)
self.adView.loadAd()
由于某种原因,当我运行该应用程序时,屏幕没有完全显示,但它有一个奇怪的缩放。会发生什么?
更新:
我将 adView 的框架移动到 viewDidLayoutSubviews()
,如下所示:
override func viewDidLoad(){
self.adView.delegate = self
self.view.addSubview(self.adView)
self.adView.loadAd()
}
override func viewDidLayoutSubviews() {
var screenSize: CGRect = UIScreen.mainScreen().bounds
var screenWidth = screenSize.width
self.adView.frame = CGRectMake(0, self.view.bounds.size.height - MOPUB_BANNER_SIZE.height,
MOPUB_BANNER_SIZE.width, MOPUB_BANNER_SIZE.height)
}
但错误仍然存在,我正在使用自动布局和尺寸类。
最佳答案
viewDidLoad
中存在的框架属性并不反射(reflect)将在屏幕上呈现的 View 的实际框架属性。在这种方法中,已经创建了网点等等,但还没有布局。
因此,这是创建 AdView 并设置其属性的正确位置...
但是布局必须在其他地方完成——最好的地方是viewDidLayoutSubviews
。如果调用此方法,您可以确保框架属性设置正确。
在更改代码中的任何内容之前,您只需将框架记录到 viewDidLoad
并将它们记录到 viewDidLayoutSubviews
- 它们应该不同。然后您可以继续将您的布局逻辑也移到那里。
关于ios - Swift:意外放大广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958946/