Objective c 在iPad上以编程方式添加子视图,硬编码

Objective c 在iPad上以编程方式添加子视图,硬编码,objective-c,cocoa,ipad,Objective C,Cocoa,Ipad,我正在我的应用程序中添加一个自定义状态栏来监视上载进度。这在纵向模式下可以正常工作,但当我在横向模式下,自定义状态栏出现时,它总是显示在“主页”按钮的另一侧。我想这是因为我在硬编码我的帧 我已将XIB文件设置为自动调整其长度 看一看: -(void) animateStatusBarIn { float x = window.frame.origin.x; float y = window.frame.origin.y; float height = 20; fl

我正在我的应用程序中添加一个自定义状态栏来监视上载进度。这在纵向模式下可以正常工作,但当我在横向模式下,自定义状态栏出现时,它总是显示在“主页”按钮的另一侧。我想这是因为我在硬编码我的帧

我已将XIB文件设置为自动调整其长度

看一看:

-(void) animateStatusBarIn {
    float x = window.frame.origin.x;
    float y = window.frame.origin.y;
    float height = 20;
    float width = window.frame.size.width;
    CGRect statusFrame = CGRectMake(x, y-20, width, height);
    iPadUploadStatusBar *statusView = [[iPadUploadStatusBar alloc] initWithNibName:@"iPadUploadStatusBar" bundle:nil];

    self.status = statusView;

    [statusView release];

    status.view.frame = statusFrame;
    [window addSubview:status.view];

    [UIView beginAnimations:@"slideDown" context:nil];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationFinished:)];
    statusWindow.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 20.0f);    
    [UIView commitAnimations];
}
在纵向方向上一切都很好,但正如我所说的,它总是决定新的状态栏应该位于home按钮的对面


顺便说一下,这在AppDelegate.m中,因此我使用默认AppDelegate文件中的现有窗口首先,您从哪里调用
-animateStatusBarIn
方法

旋转发生时,不必为
iPadUploadStatusBar
的视图设置帧(如果每次方向改变时都调用animateStatusBar方法)


您只需在
iPadUploadStatusBar
nib中正确设置视图的自动调整大小掩码,并将其添加为窗口的子视图或已经是窗口子视图的viewController视图。旋转及其动画都会自动为您处理。

首先,您从哪里调用
-animateStatusBarIn
方法

旋转发生时,不必为
iPadUploadStatusBar
的视图设置帧(如果每次方向改变时都调用animateStatusBar方法)


您只需在
iPadUploadStatusBar
nib中正确设置视图的自动调整大小掩码,并将其添加为窗口的子视图或已经是窗口子视图的viewController视图。旋转及其动画都会自动为您处理。

我从NSN通知中调用animateStatusBarIn,通知已开始上载。视图旋转时不会调用它。问题是,框架始终是一个与“主页”按钮相对并垂直的长矩形。因此,在纵向模式下,它是好的,但在横向模式下,它是在屏幕上面向上和向下的一侧。我已将视图设置为按IB调整其宽度,并且viewController支持所有方向我已通过编写示例确认旋转消息仅发送到视图已添加到窗口的第一个viewController。因此,您将视图添加到-animateStatusBarIn方法中的窗口中,该方法显然不是窗口中第一个viewController的视图,因此它不会获取旋转事件。有关更多详细信息,请查看此问题的公认答案:您的解决方案是在主viewController中为statusBar保留单独的空间,并在其中添加“iPadUploadStatusBar”子视图。我从NSN通知中调用animateStatusBarIn,通知上载已开始。视图旋转时不会调用它。问题是,框架始终是一个与“主页”按钮相对并垂直的长矩形。因此,在纵向模式下,它是好的,但在横向模式下,它是在屏幕上面向上和向下的一侧。我已将视图设置为按IB调整其宽度,并且viewController支持所有方向我已通过编写示例确认旋转消息仅发送到视图已添加到窗口的第一个viewController。因此,您将视图添加到-animateStatusBarIn方法中的窗口中,该方法显然不是窗口中第一个viewController的视图,因此它不会获取旋转事件。有关更多详细信息,请查看此问题的公认答案:解决方案是在主viewController中为statusBar保留单独的空间,并在其中添加“iPadUploadStatusBar”子视图。