一个视图控制器内的两个视图控制器,管理帧属性

时间:2011-10-10 15:19:24

标签: iphone ios uiviewcontroller cgrect

我希望在窗口底部的应用程序中加载iAd横幅,然后让应用程序的其余部分,UINavigationController和视图位于窗口的顶部。我已经尝试并尝试使用我的数学和逻辑技能,但似乎无法使它们正确显示。

iAd横幅显示在正确的位置,但NavigationController不显示。

//AppDelegate.h
AdViewController *adController;
UINavigationController *navController;
UIViewController *containerView;

//.m file didFinishLaunching...
//views and controllers already initialized
containerView.view.frame = [[UIScreen mainScreen]bounds];
[containerView.view addSubview self.adController.view];
[containerView.view addSubview self.navController.view];

//hard coded frame for an ADBannerView (loaded in .xib)
CGRect bannerFrame = self.adController.view.frame;

//sets the start point vertically by subtracting the 
//banner height from the total height of the screen
//in this case, 480 - 50
bannerFrame.origin.y = [[UIScreen mainScreen]bounds].size.height - bannerFrame.size.height;

self.adController.view.frame = bannerFrame;

//returns a rectangle that takes the 20 px status bar into account
//this rectangle's y origin is at 20
CGRect appFrame = [[UIScreen mainScreen]applicationFrame];

//This CGRect is assuming the applicationFrame
CGRect navFrame = appFrame;

//subtract the banner height from the navFrame height
//takes 50 px off of the height
navFrame.size.height = navFrame.size.height - bannerFrame.size.height;

self.navController.view.frame = navFrame;

iOS Simulator

1 个答案:

答案 0 :(得分:0)

iAd横幅需要一个viewcontroller。此外,Apple表示视图控制器应该控制整个屏幕的视图 - 直到我们可以在ios5中编写我们自己的容器视图。

我建议您查看Apple的演示iAd代码,特别是AdBannerNavigation.app。

另一个选项可能是使用mobClix框架,您可以将iAd横幅添加到导航控制器。

我假设您计划何时没有广告展示?因为有时填充率可能很低。

P.S。你有没有尝试在添加bannerview之前添加和调整导航控制器的大小?