我想调整工具栏的大小

时间:2011-05-21 03:34:26

标签: iphone orientation

我希望在方向更改时调整工具栏的大小。 但我遇到了一个棘手的问题。

我有两个视图控制器。 第一个视图控制器有一个按钮。当此按钮触摸时,第二个视图将出现在显示屏上。这些视图控制器属于导航控制器。

第一个视图控制器使导航栏显示。第二个视图控制器使导航栏隐藏。

第一个视图控制器中的重要方法

- ( void ) viewWillAppear: ( BOOL )animated {

      [ super viewWillAppear: animated ];
      [ [ [ self navigationController ] navigationBar ] setHidden: NO ];

      UIButton *nextButton;
      nextButton = [ UIButton buttonWithType: UIButtonTypeRoundedRect ];
      [ nextButton setFrame: CGRectMake( 50.0, 50.0, 200.0, 150.0 ) ];
      [ nextButton setTag: 100 ];
      [ nextButton addTarget: self action: @selector( touchedNextButton: ) forControlEvents: UIControlEventTouchUpInside ];
      [ [ self view ] addSubview: nextButton ];
}

- ( BOOL ) shouldAutorotateToInterfaceOrientation: ( UIInterfaceOrientation )interfaceOrientation {

   // Return YES for supported orientations
   BOOL iResult;
   iResult = ( ( interfaceOrientation == UIInterfaceOrientationPortrait ) || ( interfaceOrientation == UIInterfaceOrientationLandscapeLeft ) ||
                       ( interfaceOrientation == UIInterfaceOrientationLandscapeRight ) );
   return iResult;

}

    - ( void ) didRotateFromInterfaceOrientation: ( UIInterfaceOrientation )fromInterfaceOrientation {

        UIInterfaceOrientation orientation = [ [ UIDevice currentDevice ] orientation ];

        UIButton *button = ( UIButton * )[ [ self view ] viewWithTag: 100 ];

        switch ( orientation ) {
            case UIInterfaceOrientationPortrait:
                [ button setFrame: CGRectMake( 50.0, 50.0, 200.0, 150.0 ) ];
                break;
            case UIInterfaceOrientationLandscapeLeft:
            case UIInterfaceOrientationLandscapeRight:
                [ button setFrame: CGRectMake( 50.0, 50.0, 200.0, 150.0 ) ];
                break;
            default:
                break;
        }
    }

第二个视图控制器中的重要方法

- ( void ) viewDidLoad {

    [ [ [ self navigationController ] navigationBar ] setHidden: YES ];

    UIImage *imageBackArrow_iPhone = [ UIImage nonCachedImageNamed: @"backArrow_iPhone.png" ];
    NSMutableArray *toolbarItems = [ [ NSMutableArray alloc ] initWithCapacity: 5 ];
    [ toolbarItems addObject: [ [ [ UIBarButtonItem alloc ] initWithImage: imageBackArrow_iPhone style: UIBarButtonItemStylePlain target: self
                                                                       action: @selector( touchedBackArrowButton ) ] autorelease ] ];
        UIToolbar *toolbar = [ [ UIToolbar alloc ] initWithFrame: CGRectMake( 0.0, 416.0, 320.0, 44.0 ) ];
        [ toolbar setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin ];
        [ toolbar setItems: toolbarItems ];
        [ toolbarItems release ];
        [ [ self view ] addSubview: toolbar ];
        [ toolbar release ];
    }
}

第二个视图控制器中的其余方法与第一个视图控制器类似。

enter image description here

enter image description here

在第一个视图控制器中以纵向模式启动后,我触摸了下一个按钮。改变方向工作正常。 (第一个屏幕截图)

但是从第一个视图控制器中的纵向模式开始,我改为横向模式。 然后我触摸了下一个按钮,这使得布局变得怪异。 (第二次屏幕截图)

我不知道造成这个问题的原因。

请告诉我你的经历。你的建议会让我醒着。 谢谢你的阅读。

2 个答案:

答案 0 :(得分:0)

代码看起来不太可能......但是 您也可以尝试在viewcontroller的viewWillAppear方法中调整大小。 这可能有所帮助。

答案 1 :(得分:0)

为什么不使用自动调整遮罩?