如何根据UINavigationbar的大小设置内容大小

时间:2010-05-20 11:42:10

标签: iphone objective-c cocoa-touch

当我的应用程序切换到横向时,我正在调整导航栏的大小。 但我无法根据导航栏的高度设置导航栏的内容大小。

Landscape image: - 在此图片中,左上角的条形项和导航栏的标题在切换到横向时不会调整大小......它们应根据导航栏的高度重新调整大小。

请建议我有任何想法吗?

感谢
迪皮卡乌达

3 个答案:

答案 0 :(得分:1)

覆盖方法:

- (UIView *)rotatingHeaderView
{
    return yourNavigationBar;
}

当您的设备方向发生时,将调用此方法。

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if(mainLoginView.superview == self.view || modulesView.superview == self.view)
    {
        return NO;
    }
    else
    {
        return YES;
    }
}

用你的代码替换这个方法并回复我会发生什么:)

答案 1 :(得分:0)

我正在使用这种委托方法: -

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    if(mainLoginView.superview == self.view || modulesView.superview == self.view){
        return NO;
    }else{
        [self rotateTheNavigation:contactsNavigation withOrientation:interfaceOrientation];
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
}

答案 2 :(得分:0)

如果您需要重新计算观看次数,最好将代码放入

  • - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
  • -(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

shouldAutorotateToInterfaceOrientation只应该回答这个问题:“这个视图控制器应该旋转还是不旋转?”。

例如:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
     // Get the new screen width
     self.cellWidth = self.view.frame.size.width;

    // Recalculate the view
    [self rebuildTheView];
}

在大多数情况下,如果在Interface Builder中设置正确的调整大小设置,则在所有ViewController中实现shouldAutorotate就足够了。在实现didRotateFromInterfaceOrientation或willAnimateRotationToInterfaceOrientation

之前检查是否已执行此操作

例如:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return [ViewToolkit orientationIsSupported:interfaceOrientation];
}