2

当导航控制器出现在 UIPopoverController 中时,我的 UIBarButtonItem 在导航栏中被切断。知道是什么原因造成的吗?

问题截图: http: //www.flickr.com/photos/92771610@N02/8432176079

这是代码:

UIViewController *vc = [[[UIViewController alloc] init] autorelease];

UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveAction:)];

vc.navigationItem.rightBarButtonItem = saveButton;

UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:navController];
popoverController.delegate = self;

[popoverController presentPopoverFromRect:buttonThatMakesThePopoverAppear.frame
                                   inView:self.view.superview
                 permittedArrowDirections:UIPopoverArrowDirectionAny
                                 animated:YES];

谢谢,贡萨洛

4

2 回答 2

2

这是因为您没有遵守iOS Human Interface Guidelines

您的自定义UIBarButtonItem视图和这些元素的自定义背景图像应为 30 像素高。弹出框的斜角边框正确地剪裁了您的自定义图稿,因为它们不应该那么大。

当不通过 a 呈现时UIPopoverController,这些按钮在 iOS 6 中看起来很好,但这只是因为没有裁剪边界的视图。请注意,在 iOS 5 中确实会发生这种情况,因此虽然您应该看起来不错,但请确保您在旧版本中进行测试。

于 2013-05-14T19:26:05.670 回答
0

在其他地方,使用外观管理器在 UINavigationController 和 UIBarButtonItem 上设置自定义图像/背景/标题位置会导致此问题,因为它没有考虑弹出框的斜角边框。解决方案:要么在使用前反转为自定义外观设置的值,要么使自定义适用于所有情况,包括在弹出窗口中使用导航栏。

于 2013-02-01T18:51:34.747 回答