"presentPopoverFromRect"를 지정하고 해당 rect를 충분히 제한함으로써 내장 클래스에서 이미 수행 할 수 있습니다.
아래의 코드는 바로 위의 결과 코드 꺼낸다. 작은 cogwheel 것은 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];
이 질문에 답하지 않은 경우 질문을 잘 표현할 수 있습니다. :)
@David van Dugteren : 아직 어떤 문제에 직면하고 있는지 알려주세요. – Jhaliya