UINavigationBar中的项目未填充屏幕宽度

最后发布: 2013-05-07 20:18:10


问题

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

导航栏本身是在情节提要中手动添加的。 将其设置为自动调整大小和拉伸,并检查“自动调整大小”子视图。

如何使其始终正确显示导航栏?

相对设置代码如下所示。

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

初始装入景观

横向的初始负载

旋转至肖像

旋转至肖像

旋转回到风景

旋转回到风景

ios uinavigationbar
回答

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

[buttonsItem.titleView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];


回答

我完全有同样的问题,您的评论隐瞒是正确的答案,对于谁也有同样的问题,可以解决,但将右工具栏按钮或右导航栏项目的代码插入ViewDidAppear中,它将像魅力一样工作!