我想将UIPopoverArrowDirection移至左侧,以使实际箭头不再居中,而是从左侧移至25%,从右侧移至75%。

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



问题在于没有真正的方法可以深入了解popover类。

最佳答案

通过指定“presentPopoverFromRect”并使其足够受约束,内置类已经可以做到这一点。

下面的代码直接摘自上面的代码。多余的绒毛是因为小齿轮在UINavigationBar的UIToolbar中。 r是UIToolbar的框架,正在进行调整以使其击中正确的位置(箭头所示),或者它会稍微偏离中心。 MGSettingsView是 View Controller (其中包含“启用转换”,“启用夜间模式”等)。

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

如果这不是您要的内容,那么我认为最好改一下您的问题。 :)

10-08 05:44