当我第一次加载我的 View Controller 时,我为我的 UINavigationBar 设置了一些按钮和一个标题。如果我以纵向加载屏幕,一切看起来都很棒。但是,如果我横向加载屏幕,按钮只会占用所提供空间的一部分。当我旋转到纵向并再次旋转回横向时,项目现在会正确扩展以填充 NavBar 上的空间。
导航栏本身是在 Storyboard中手动添加的。它被设置为自动调整大小和拉伸(stretch)并选中自动调整 subview 大小。
如何让它始终正确显示导航栏?
相关设置代码如下所示。
UIBarButtonItem * saveBtn = [[UIBarButtonItem alloc] initWithTitle:@"Set" style:UIBarButtonItemStyleBordered target:self action:@selector(setField)];
UIBarButtonItem * cancelBtn = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelClicked:)];
UINavigationItem * buttonsItem = [[UINavigationItem alloc] init];
NSString * title = [self.data objectForKey:@"title"];
if(title){
buttonsItem.title = title;
} else {
buttonsItem.title = @"Default Title";
}
[buttonsItem setLeftBarButtonItem:cancelBtn animated:YES];
[buttonsItem setRightBarButtonItem:saveBtn animated:YES];
[navBar setItems:[[NSArray alloc] initWithObjects: buttonsItem, nil] animated:YES];
附加信息: 我之前忘记提及的一些附加信息。
我不是通过 segue 加载这个屏幕,而是这样做的:
DiaryCalendarPickerViewController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"diaryCalendarForm"];
...
[self presentViewController:navigationController animated:YES completion:nil];
初始加载到横向
旋转成纵向
旋转回横向
最佳答案
在布局 View 之后但在设置导航项之前尝试调用
[buttonsItem.titleView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
关于ios - UINavigationBar 中的项目未填充屏幕宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427816/