我一直想开发文字游戏,所以我购买了一个应用模板 - 从源代码中学习。
在我将模板转换为ARC和故事板后,我现在想开始在我的应用程序中使用iAd。
然而,当我将self.canDisplayBannerAds = YES;
放到主VC的viewDidLoad
(显示带字母的游戏板)时,我注意到方法viewDidLayoutSubviews
只被调用一次:< / p>
- (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];
}
}
结果,带有字母的游戏板没有正确调整大小并且没有占据整个宽度(这里fullscreen screenshot):
当我删除该行或将其更改为NO
时,会多次调用viewDidLayoutSubviews
(但令人惊讶的是会打印min=375
的相同值。)
我理解我的VC的主视图存储在self.originalContentView中,但为什么不调用viewDidLayoutSubviews
(为正确布局VC需要多次)?
我在调试器中看了很多,也搜索了SO(发现只有2个类似问题) - 请在这里推荐一个解决方法。
iAd解决方案如何运作?不应该有一些iAd调用的方法告诉原始视图重新布局吗?