0

而不是必须调整我的应用程序中的每一个 XIB,我希望只调整主视图的大小。

我在 AppDelegate 中做到了这一点,并取得了部分成功:

if (kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iOS_6_1) {
    NSLog(@"iOs 7 detected");
    frame.origin.y += 20.0;
    frame.size.height -= 20.0;
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
}

self.window = [[[UIWindow alloc] initWithFrame:frame] autorelease];

整个窗口向下移动,状态栏显示得很好,但是我所有的视图现在对于屏幕来说都高了 20 像素,好像我的高度 -20 没有任何效果。

有谁知道我怎样才能让主窗口的高度正确?

谢谢!

4

2 回答 2

1

一个可能的解决方案可能如下:您可以尝试更改根视图控制器框架大小,而不是更改窗口大小。这个解决方案对我有用。作为参考这里是我的代码。我已经在我的根视图控制器中添加了它,并在我的自定义 init 方法中调用它:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
        {
            self.edgesForExtendedLayout = UIRectEdgeNone;
            CGRect frame=self.view.frame;
            frame.origin.y=20;
            frame.size.height-=20;
            self.view.frame=frame;
        }
于 2013-09-24T09:31:36.520 回答
0

我通过覆盖根视图控制器并将我的“主”视图控制器附加到它来使其工作。也许有更好的工作方式并做到这一点,这是一种方式。

在您的 AppDelegate 中(applicationDidFinishLaunch 方法)

- (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     //用一个空的viewcontroller覆盖rootviewcontroller
     window.rootViewController = [[UIViewController alloc] init];

     //设置我的自定义视图控制器
     MyViewController *vc = [[MyViewController alloc] init];
     [vc setModalPresentationStyle:UIModalPresentationFullScreen];
     [window.rootViewController addChildViewController:vc];
     [window.rootViewController.view addSubview:vc.view];

      // 放入所需的大小和位置。
      vc.view.frame = CGRectMake(10.0, 100.0, 300.0, 100.0);

      ...

纯娱乐。如果您正在使用 StoryBoard 进行项目,则相同的过程但获取 StoryBoard 标识符。请注意,在这种情况下,您必须在 Interface Builder 中为您的主视图控制器设置 StoryBoard ID。

- (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        // 从您在 Interface Builder 中设置的故事板 ID 获取视图控制器
        UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MyMainViewController"];
        [vc setModalPresentationStyle:UIModalPresentationFullScreen];
        [window.rootViewController addChildViewController:vc];
        [window.rootViewController.view addSubview:vc.view];
        // 放入不想要的大小和位置。
        vc.view.frame = CGRectMake(10.0, 100.0, 300.0, 100.0);

      ...
于 2013-11-07T16:09:15.683 回答