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

标签 ios uinavigationbar

当我第一次加载我的 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];

初始加载到横向

Initial load in landscape

旋转成纵向

Rotate to portrait

旋转回横向

Rotate back to landscape

最佳答案

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

[buttonsItem.titleView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

关于ios - UINavigationBar 中的项目未填充屏幕宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427816/

相关文章:

ios - 带有 'Back' 按钮的 UINavigationBar。使用 XIB 创建

ios - 尝试快速将选定的 tableview 单元格值传递给 NavigationBar 标题

ios - 在存储库 tfs 中添加一个 xcode 项目

ios - 添加了 SplitViewController 并且线程永远不会到达 viewDidLoad

ios - 流媒体播放的实时音频效果

ios - 截取 tableview 的屏幕截图时如何包含导航栏

ios - 按下 backBarButton(来自 NavigationController)时如何播放声音? (对于 swift )

ios - XIB 中的导航栏项目,呈现 Storyboard选项卡栏 Root View Controller Segue

ios - CCParallaxNode 继续前进,convertToWorldSpace 给出错误的值 cocos2d iPhone

ios - 子类化具有 xib 的子类化 UIViewController