Swift:广告意外放大
Swift: Unexpected zoom in ad
我使用以下代码添加了 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
中存在的框架属性不反映将显示在屏幕上的视图的实际框架属性。在这种方法中,已经创建了网点等等,但还没有布局。
因此,这是创建 AdView 并设置其属性的正确位置...
但是 布局必须在其他地方完成 - 最好的地方是 viewDidLayoutSubviews
。如果调用此方法,您可以确保框架属性设置正确。
在更改代码中的任何内容之前,您只需在 viewDidLoad
中记录框架并将它们记录在 viewDidLayoutSubviews
中 - 它们应该不同。然后您可以继续将您的布局逻辑也移到那里。
我自己解决了这个问题。使用 Spritekit 和场景时,请记住在呈现场景之前始终配置场景,特别是场景的 ScaleMode。将场景的 scaleMode 设置为:scaleMode= .Fill
缩放停止发生。
我使用以下代码添加了 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
中存在的框架属性不反映将显示在屏幕上的视图的实际框架属性。在这种方法中,已经创建了网点等等,但还没有布局。
因此,这是创建 AdView 并设置其属性的正确位置...
但是 布局必须在其他地方完成 - 最好的地方是 viewDidLayoutSubviews
。如果调用此方法,您可以确保框架属性设置正确。
在更改代码中的任何内容之前,您只需在 viewDidLoad
中记录框架并将它们记录在 viewDidLayoutSubviews
中 - 它们应该不同。然后您可以继续将您的布局逻辑也移到那里。
我自己解决了这个问题。使用 Spritekit 和场景时,请记住在呈现场景之前始终配置场景,特别是场景的 ScaleMode。将场景的 scaleMode 设置为:scaleMode= .Fill
缩放停止发生。