当UINavigationController在UIPopoverController中呈现时,UIBarButtonItem截断

当navController出现在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]; 

谢谢贡萨洛

这是因为您不尊重iOS人机界面指南 。

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

当没有通过UIPopoverController呈现时,这些button在iOS 6中显示正常,但只是因为没有视图剪裁边界。 请注意,在iOS 5中,这确实发生了,所以虽然您应该看起来不错,但要确保您在旧版本中进行testing。

在其他地方使用外观pipe理器在UINavigationController和UIBarButtonItem上设置自定义的图像/背景/标题位置,这是因为它没有考虑到弹窗的斜面边框。 解决scheme:在使用之前颠倒为自定义外观设置的值,或者使自定义适用于所有情况,包括在popup窗口中使用导航栏。