当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];
谢谢, 贡萨洛
答案 0 :(得分:2)
这是因为你没有尊重iOS Human Interface Guidelines。
您的自定义UIBarButtonItem
视图和这些元素的自定义背景图片应为30像素高。 popover的斜角边框正确剪裁您的自定义图稿,因为它们不应该那么大。
当没有通过UIPopoverController
呈现时,这些按钮在iOS 6中显示正常,但仅仅是因为没有视图剪切边界。请注意,在iOS 5中确实会发生这种情况,所以尽管您看起来不错,但请确保在旧版本中进行测试。
答案 1 :(得分:0)
在其他地方使用外观管理器在UINavigationController和UIBarButtonItem上设置自定义图像/背景/标题位置导致了这种情况,因为它没有考虑到popover的斜角边框。解决方案:要么在使用前反转为自定义外观设置的值,要么使自定义适用于所有情况,包括使用弹出窗口中的导航栏。