0

有一点问题,下面是细分:

我的 AppDelegate 使用它的 rootViewController 一个视图控制器。这个视图控制器的目的是交换几个其他的视图控制器,称之为登录和主屏幕。为了简单起见,我已经从我将发布的代码中删除了所有交换代码,并且让 rootViewController 简单地显示它是第一个内容视图控制器,比如登录。

我遇到的问题是内容视图控制器似乎在 rootViewController 内被向下推了一点。我给 rootViewController 一个蓝色背景,给内容视图控制器一个橙色背景。这是我的代码:

AppDelegate.h

#import <UIKit/UIKit.h>

@class MainViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) MainViewController *main;

@end

AppDelegate.m

#import "AppDelegate.h"
#import "MainViewController.h"

@implementation AppDelegate

@synthesize main;

- (void)dealloc
{
    [_window release];
    [main release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    MainViewController *mainVC = [[MainViewController alloc] init];
    self.main = mainVC;
    self.window.rootViewController = self.main;

    [self.window makeKeyAndVisible];

    return YES;
}

主视图控制器.h

#import <UIKit/UIKit.h>

@class ContentViewController;

@interface MainViewController : UIViewController

@property (nonatomic, retain) ContentViewController *content;

@end

主视图控制器.m

#import "MainViewController.h"
#import "ContentViewController.h"

@implementation MainViewController

@synthesize content;

- (id)init
{
self = [super init];
    if (self ) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor blueColor];

    ContentViewController *viewController = [[ContentViewController alloc] init];
    self.content = viewController;
    [self.view insertSubview:self.content.view atIndex:0];              
}

- (void)dealloc {
    [content release];  
    [super dealloc];
}

@end

内容视图控制器.h

#import <UIKit/UIKit.h>

@interface LoginVC : UIViewController

@end

内容视图控制器.m

#import "ContentViewController.h"

@implementation ContentViewController

- (id)init
{
    self = [super init];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor orangeColor];
}

- (void)dealloc {
    [super dealloc];
}

@end

上面的代码给了我一个状态栏,它下面有一个蓝色条(大约是状态栏的高度)(这是主视图控制器),然后是橙色的内容视图控制器,占据了屏幕的其余部分。出于某种原因,主视图控制器似乎将内容视图控制器向下推了一点。

奇怪的是,如果我创建一个视图控制器并使用 XIB 来绘制视图,它看起来就很好,并且内容视图正好位于主视图的顶部。

如果有人能对这个问题有所了解,我将非常感激。

干杯

4

1 回答 1

2

我想你不应该这样做

ContentViewController *viewController = [[ContentViewController alloc] init];
self.content = viewController;
[self.view insertSubview:self.content.view atIndex:0];

反而:

ContentViewController *viewController = [[ContentViewController alloc] init];
self.content = viewController;
[self presentViewController:self.content animated:YES completion:nil];
于 2013-05-22T18:42:36.627 回答