1

当我第一次加载视图控制器时,我为 UINavigationBar 设置了一些按钮和标题。如果我以纵向加载屏幕,一切看起来都很棒。但是,如果我以横向方式加载屏幕,则按钮仅占用提供的部分空间。当我再次旋转到纵向并返回到横向时,这些项目现在正确扩展以填充 NavBar 上的空间。

NavBar 本身是在情节提要中手动添加的。它设置为自动调整大小和拉伸,并选中 Autoresize Subviews。

我该怎么做才能让它始终正确显示导航栏?

相关设置代码如下所示。

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];

初始加载到横向

横向初始负载

旋转到纵向

旋转到纵向

转回横向

转回横向

4

2 回答 2

1

在布局视图之后但在设置导航项之前尝试调用

[buttonsItem.titleView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
于 2013-05-07T20:57:56.233 回答
0

我有同样的问题,你的评论是正确的答案,对于谁有同样的问题,修复它,但右栏按钮或右导航栏项目的代码进入 ViewDidAppear,它会像魅力一样工作!

于 2014-03-15T05:33:52.150 回答