我的主视图控制器只支持landscapeleft和landscaperight。viewDidLoad中的此视图控制器具有:
if ([self.navigationItem respondsToSelector:@selector(leftItemsSupplementBackButton)]) {
self.navigationItem.leftItemsSupplementBackButton = YES;
self.navigationItem.leftBarButtonItem = homeBBI;
NSArray *rightNavItems = [NSArray arrayWithObjects:searchBBI, allBBI, nil];
self.navigationItem.rightBarButtonItems = rightNavItems;
}
当我将ReportViewController推送到堆栈上时,它看起来很好。此控制器也仅支持横向。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
当我把iPad旋转180度时,一切看起来都很好。然而,当我弹出到主视图控制器时,UINavigationBar会变得一团糟。它基本上包含了所有的项目,包括向左挤压的标题。我的搜索栏最终占据了导航栏的75%。我在MainViewController:的viewDidLoad中创建了它
// Search Bar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 150, 44)];
self.SearchEntry = searchBar;
self.SearchEntry.delegate = self;
UISearchDisplayController *searchDisplayCtlr = [[UISearchDisplayController alloc] initWithSearchBar:_searchEntry contentsController:self];
self.SearchController = searchDisplayCtlr;
searchDisplayCtlr.searchResultsDataSource = self;
searchDisplayCtlr.searchResultsDelegate = self;
UIBarButtonItem *searchBBI = [[UIBarButtonItem alloc] initWithCustomView:_searchEntry];
这在iOS4中不会发生,因为我创建了一个UIToolBar并将其作为我的右BarButtonItem。现在我正在尝试使用rightBarButtonItems iOS 5方法,我遇到了这个问题。有什么想法吗?谢谢
编辑:如果我在不旋转iPad的情况下打开MainVC,也不会发生这种情况。只有当我旋转时才会发生这种情况。
是否设置了自动调整大小的掩码,以便工具栏知道调整大小?我想如果它在没有其他MVC的情况下旋转得很好的话。
我也遇到过类似的问题,尤其是确保我的主VC在不在屏幕上时正确旋转。我不确定我的解决方案是否很棒,但它有效。当从另一个视图返回时,我会检查我的边界是否更改,如果是,请清除我的视图(枚举子视图和removeFromSuperview),然后再次加载它们。基本上,将viewDidLoad中的所有内容都保留在另一个方法中,并从viewWillAppear调用它。这幅画画得非常快,所以你甚至不会在屏幕上注意到它。
不优雅,所以我会观察是否有人有更好的解决方案。
祝你好运,
Damien