UIPopoverController改变UIPopoverArrowDirection的位置

mrd*_*enz 5 iphone uipopovercontroller ios

我想UIPopoverArrowDirection向左移动,使实际的箭头不再居中,但是左边是25%,右边是75%.

为了帮助理解我的意思,请看两个屏幕截图,我希望它像第二个...

正常的弹出窗口

Popover正确放置了我想要的箭头

问题是没有真正的方法可以深入挖掘popover类......

Kal*_*lle 7

通过指定"presentPopoverFromRect"并使该rect受到足够的约束,这对于内置类已经可行了.

这样做的例子

以下是直接从导致上述内容的代码中获取的代码.额外的绒毛是因为小齿轮的东西在UINavigationBar的UIToolbar中.r是UIToolbar的框架,它被调整到正确的位置(箭头)或者稍微偏离中心.MGSettingsView是视图控制器("启用转换","启用夜间模式"等).

UINavigationItem *item = scrollView.navbar.topItem;
UIToolbar *authorTools = (UIToolbar *)[item.rightBarButtonItem customView];
CGRect r = authorTools.frame;
r.size.width = 18;
r.origin.x += 12;

CGSize popoverSize = CGSizeMake(300.f, 500.f);
MGSettingsView *settingsView = [[MGSettingsView alloc] initWithSize:popoverSize];
UIPopoverController *poctl = [[UIPopoverController alloc] initWithContentViewController:settingsView];
settingsView.popover = poctl;
poctl.delegate = self;
poctl.popoverContentSize = popoverSize;
[poctl presentPopoverFromRect:r inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[settingsView release];
Run Code Online (Sandbox Code Playgroud)

如果这不是你所要求的,那么我认为你最好重新解释一下你的问题.:)