UINavigationBar中的项目没有填充屏幕宽度
当我第一次加载我的视图控制器时,我为我的UINavigationBar设置了一些按钮和一个标题。如果我以纵向加载屏幕,一切看起来都很棒。但是,如果我在横向加载屏幕,按钮仅占用提供的部分空间。当我旋转到纵向并再次回到横向时,项目现在正确地展开以填充导航栏上的空间。UINavigationBar中的项目没有填充屏幕宽度
NavBar本身是在故事板中手动添加的。它被设置为自动调整和拉伸,并且Autoresize子视图被选中。
我该怎么做才能使其始终正确显示导航栏?
相对设置代码显示如下。
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];
附加信息: 一些额外的信息,我以前曾忘了提。
我不是通过赛格瑞加载该屏幕上,而不是我这样做:
DiaryCalendarPickerViewController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"diaryCalendarForm"];
...
[self presentViewController:navigationController animated:YES completion:nil];
最初加载到景观
旋转为纵向
Rot吃回景观
后你布置你的看法,但设置导航项目之前尝试调用
[buttonsItem.titleView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
这些都不适合我。我不认为UINavigationItem可以工作,因为我手动添加了NAB栏。其他信息已添加到帖子中。 – cain 2013-05-08 13:18:52
DiaryCalendarPickerViewController是否继承自UINavigationController?如果有的话,为什么需要手动添加一个导航栏?用于设置条形按钮项目的代码应位于视图的任何视图的viewDidLoad中,并将其推送到导航控制器上。 – zimmryan 2013-05-08 14:40:03
它从UIViewController继承。我相信它没有得到标准的NavBar,因为它被呈现而不是被推送。 – cain 2013-05-08 15:15:21
我有同样的问题恰好和您的评论该隐是正确的答案,对他们来说,有同样的问题,解决它,但正确的酒吧按钮或右侧导航栏项的代码到ViewDidAppear,它将像魅力一样工作!
你可以添加一些截图吗? – Undo 2013-05-07 20:25:56