我一直想开发文字游戏,所以我购买了一个应用程序模板——从源代码中学习。
在我将模板转换为 ARC 和 Storyboard 之后,我现在想开始在我的应用程序中使用 iAd。
self.canDisplayBannerAds = YES;
但是,当我放入viewDidLoad
主 VC(显示带有字母的游戏板)时,我注意到该方法viewDidLayoutSubviews
只调用了一次:
- (void)viewDidLoad
{
[super viewDidLoad];
// ... SKIPPED ...
self.canDisplayBannerAds = YES;
}
- (void) viewDidLayoutSubviews
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
float min = MIN(self.viewWordTableContainer.frame.size.width,
self.viewWordTableContainer.frame.size.height);
NSLog(@"XXX min=%f", min);
self.constraintWordTableWidth.constant = min;
self.constraintWordTableHeight.constant = min;
[_wordTable viewDidLayoutSubviews];
[self updateLabelWords];
}
}
结果是带有字母的游戏板没有正确调整大小并且没有占据整个宽度(这里是全屏截图):
当我删除该行或将其更改为 时NO
, thenviewDidLayoutSubviews
被调用多次(但令人惊讶地打印相同的值min=375
)。
我知道我的 VC 的主视图被存储到self.originalContentView但为什么不viewDidLayoutSubviews
被调用(正确布局 VC 所需的多次)?
我在调试器中看了很多,也在 SO 上进行了搜索(只找到了 2 个类似的问题) - 请在此处向我推荐一个解决方法。
iAd 解决方案如何运作?iAd不应该调用一些方法来告诉原始视图重新布局自己吗?