我有一个基于导航的应用程序,我必须减少导航控制器的帧。 在iOS 6中将导航控制器帧减少50px后,子视图控制器的高度应该是(480-64(导航栏+状态栏)-50(我减少的高度)= 366。但是我的视图控制器高度为386px。这些额外的20px视图控制器位于导航栏下。请参阅附图。
任何人都可以帮助我为什么会出现这个问题?在iOS7中,它可以正常工作。
这是我的示例代码: AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor yellowColor];
ViewController* vc =[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
vc.view.backgroundColor = [UIColor greenColor];
UINavigationController* navVC = [[UINavigationController alloc]initWithRootViewController:vc];
self.window.rootViewController = navVC;
[self.window makeKeyAndVisible];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(36, 36), NO, 0.0);
UIImage *blank = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[[UINavigationBar appearance] setBackgroundImage:blank forBarMetrics:UIBarMetricsDefault];
return YES;
}
按钮单击视图控制器的事件:
- (IBAction)buttonClicked:(id)sender {
CGRect navFrame = self.navigationController.view.frame;
navFrame.size.height -=50;
self.navigationController.view.frame = navFrame;
}
答案 0 :(得分:0)
因为视图控制器边界将取决于根视图控制器,并且您的导航控制器应至少为44像素。所以你想要显示广告然后请减少子视图内容框架高度而不是self.navigationController.view框架。
并将您的广告视图添加到Window中。不要试图减少导航或viewcontroller框架高度。尝试减少或调整子视图的高度和坐标。并将您的广告添加到窗口底部。
尝试以这种方式添加广告视图
@interface HomeVC : UIViewController<GADBannerViewDelegate>
{
}
@property(nonatomic, strong) GADBannerView *adBanner;
@end
@implementation HomeVC
- (void)viewDidLoad
{
[super viewDidLoad];
// Initialize the banner at the bottom of the screen.
CGPoint origin = CGPointMake(isIpad?20.0:0.0, isIpad?935.0:IS_IPHONE_5?518.0:430.0);
// // Use predefined GADAdSize constants to define the GADBannerView.
self.adBanner = [[GADBannerView alloc] initWithAdSize:isIpad?kGADAdSizeLeaderboard:kGADAdSizeBanner origin:origin];
self.adBanner.backgroundColor = [UIColor whiteColor];
// Note: Edit SampleConstants.h to provide a definition for kSampleAdUnitID before compiling.
self.adBanner.adUnitID = adMobKey;
self.adBanner.delegate = self;
self.adBanner.rootViewController = self;
[self.adBanner loadRequest:[self request]];
}
- (void)adViewDidReceiveAd:(GADBannerView *)adView
{
[[[[UIApplication sharedApplication] delegate] window] addSubview:self.adBanner];
}
@end
如果你还有任何问题,请跟我说。
答案 1 :(得分:0)
要显示广告,您无需剪切视图控制器视图。 Apple提供了在应用中添加广告横幅的功能。请查看this
另请务必阅读Best Practices
另请参阅iAdSuite,它会在您的应用中提供包含广告的精彩示例。 这应该会带你朝着正确的方向前进。我希望这有帮助