iPad popover - How do you point to one segment in a segmented control?

和自甴很熟 提交于 2019-12-06 08:53:46

Code below may be useful for pointing popover to selected tab in segment control.

CGRect frame = [segmentControl frame];
frame =CGRectMake((frame.size.width/No. of segments * [segmentControl selectedSegmentIndex]), 0, frame.size.width/No. of segments, segmentControl.bounds.size.height);

[m_PopOver presentPopoverFromRect:frame inView:segmentControl permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

Try something like this (replace desiredSegmentIndex with the index of the segment the arrow should point to):

CGFloat desiredOffset = 0;
for (NSUInteger segmentIndex = 0; segmentIndex < desiredSegmentIndex; segmentIndex ++)
    desiredOffset += [segmentedControl widthForSegmentAtIndex:segmentIndex];
[printController presentFromRect:CGRectMake(desiredOffset, 0, [segmentedControl widthForSegmentAtIndex:desiredSegmentIndex], segmentedControl.bounds.size.height);
                          inView:segmentedControl
                        animated:YES
               completionHandler:completionHandler];

I have not tested this, but it (or something very similar) should work.

Updated for Swift 3.0

var frame = segmentedControl.frame
frame = CGRect(x: frame.size.width/CGFloat(segmentedControl.numberOfSegments) * CGFloat(segmentedControl.selectedSegmentIndex),
               y: 0,
               width: frame.size.width/CGFloat(segmentedControl.numberOfSegments),
               height: segmentedControl.bounds.size.height)


popoverController?.sourceRect = frame
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!