我希望在方向更改时调整工具栏的大小。 但我遇到了一个棘手的问题。
我有两个视图控制器。 第一个视图控制器有一个按钮。当此按钮触摸时,第二个视图将出现在显示屏上。这些视图控制器属于导航控制器。
第一个视图控制器使导航栏显示。第二个视图控制器使导航栏隐藏。
第一个视图控制器中的重要方法
- ( 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 ];
}
}
第二个视图控制器中的其余方法与第一个视图控制器类似。
在第一个视图控制器中以纵向模式启动后,我触摸了下一个按钮。改变方向工作正常。 (第一个屏幕截图)
但是从第一个视图控制器中的纵向模式开始,我改为横向模式。 然后我触摸了下一个按钮,这使得布局变得怪异。 (第二次屏幕截图)
我不知道造成这个问题的原因。
请告诉我你的经历。你的建议会让我醒着。 谢谢你的阅读。
答案 0 :(得分:0)
代码看起来不太可能......但是 您也可以尝试在viewcontroller的viewWillAppear方法中调整大小。 这可能有所帮助。
答案 1 :(得分:0)
为什么不使用自动调整遮罩?