ViewController视图以〜(0,20)开头

时间:2011-07-29 08:57:35

标签: objective-c ios uiviewcontroller uinavigationbar

我已尝试启动基于视图的应用和基于窗口的应用,但我仍然遇到同样的问题。 当我添加一个导航栏时,它看起来像是从绳子开始〜(0,20)并在它和“系统托盘”之间留下一些空间(我找不到带有时钟和电池等的码头的单词)

我无法弄清楚为什么会发生这种情况,因为框架的nslog告诉我它起源于(0,0)(奇怪的是宽度为0:/但它清晰可见)。

代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, 
                                                                       self.view.frame.origin.y+48.0f, 
                                                                       self.view.frame.size.width, 
                                                                       self.view.frame.size.height)];
        [image setImage:[UIImage imageNamed:@"IMG_0792.PNG"]];
        [self.view addSubview:image];

        self.navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, 
                                                                    self.view.frame.origin.y, 
                                                                    self.view.frame.size.width, 
                                                                    45.0f)];

        [navBar setDelegate:self];    
        [navBar pushNavigationItem: [[UINavigationItem alloc] initWithTitle:@"Image Stream"] animated:NO];
        [self.view addSubview:navBar];
    }
    return self;
}

在appdelegate中我只声明了它,retain-property和:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.menu = [[MenuViewController alloc] initWithNibName:nil bundle:nil];
    [self.window setRootViewController:menu];
    [self.window makeKeyAndVisible];
    return YES;
}
如果有人知道为什么会这样,那么

会非常好。感谢

2 个答案:

答案 0 :(得分:1)

使用superview的坐标定位视图时,请使用bounds,而不是frame。如果有状态栏,则superview.frame.x将为非零,但子视图的坐标是相对于超级视图而不是位置。

答案 1 :(得分:0)

检查以下内容:

  • UIViewController's Xib中,如果它有状态栏。如果是,则将无。 (您可以在检查器中设置它,只需选择根UIView

  • 您是否正在通过XIB将UIViewController添加到您的应用代表?如果是,请检查应用程序代理xib中的UIViewController,看看它是否有状态栏。

p.s:它的状态栏。

编辑您用于UINavigation的框架的内容? 45.0f。