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

时间:2013-01-31 16:29:03

标签: ios

当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];

谢谢, 贡萨洛

2 个答案:

答案 0 :(得分:2)

这是因为你没有尊重iOS Human Interface Guidelines

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

当没有通过UIPopoverController呈现时,这些按钮在iOS 6中显示正常,但仅仅是因为没有视图剪切边界。请注意,在iOS 5中确实会发生这种情况,所以尽管您看起来不错,但请确保在旧版本中进行测试。

答案 1 :(得分:0)

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