【问题标题】:iPad popover - How do you point to one segment in a segmented control?iPad popover - 你如何指向分段控件中的一个段?
【发布时间】:2012-03-17 09:13:33
【问题描述】:

我有一个 iPad 弹出框,并希望显示(指向)分段控件中的一个段。下面的代码工作正常,除了指针指向分段控件的中间 - 我希望它指向正确的段。即段0或段1。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
   [printController presentFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES completionHandler:completionHandler];// iPad
}

非常感谢。

【问题讨论】:

    标签: ios popover


    【解决方案1】:

    下面的代码可能有助于将弹出框指向段控件中的选定选项卡。

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

    【讨论】:

      【解决方案2】:

      尝试这样的事情(将 desiredSegmentIndex 替换为箭头应指向的段的索引):

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

      我没有对此进行测试,但它(或类似的东西)应该可以工作。

      【讨论】:

        【解决方案3】:

        为 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多