【问题标题】:Specifying the location of a UISegmentedControl programmatically以编程方式指定 UISegmentedControl 的位置
【发布时间】:2013-10-22 07:41:26
【问题描述】:

如何以编程方式指定UISegmentedControl 的位置?设置框架什么都不做。似乎mySegmentedControl.frame 返回按钮的框架,而不是“边界矩形”。

我应该注意到我正在使用的分段控件是通过界面生成器添加的。

编辑 - 更多信息:所以我刚刚了解到分段控件通常位于 UIToolbar 之类的内部。因此,我创建了一个IBOutlet 对故事板为我创建的工具栏的引用。当我记录此工具栏的位置时,我可以看到 y 位置偏离了我想要的位置。但是设置此工具栏的框架似乎并没有移动它。

【问题讨论】:

  • 您尝试过 mySegmentedControl.center 吗?只是猜测,您是否尝试在 UIBarButtonItem 中指定 UISegmentedControl 的位置?确保您的 IBOutlet 设置正确,并且您在加载 xib 或情节提要后尝试访问它。
  • @bbodayle 感谢您的建议。我登录并尝试设置中心属性。不幸的是,它没有移动分段控件。我刚刚意识到分段控件需要进入其他东西(如工具栏)。请查看问题中的其他信息。
  • 你能发布一个示例项目吗?
  • @bbodayle 我通过以编程方式创建控件和包装工具栏解决了这个问题。我认为这是一些奇怪的故事板/界面构建器问题,所以我不认为我会发布示例项目。再次感谢您的帮助:-)

标签: iphone uikit uisegmentedcontrol


【解决方案1】:

设置框架是正确的方法。您的项目中还有其他问题。您可以使用带有 UIButton 和 UISegmentedControl 的简单单视图项目进行测试:

- (IBAction)buttonTapped:(id)sender {
    self.segmentedControl.frame = ((UIButton*)sender).frame;
    ((UIButton*)sender).hidden = YES;
}

这会将分段控件设置为与按钮相同的位置和大小,然后隐藏按钮。

【讨论】:

    【解决方案2】:

    奇怪的是,你不能只改变 x 或 y 值,你必须改变整个帧。

    我在应用中使用合成声音,声音播放前有延迟。如果在低于 iOS7 上运行,我会隐藏分段控件和标签。但这在屏幕上留下了一个空白,原来是控件所在的位置。此代码将下一个分段控件移动到原来的位置。

    if ( SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(@"7.0") ) {
    
                // Hide the delay control
                self.chooseDelaySegmentedControl.hidden = YES;
                self.targetSoundDelayText.text = @"";
    
                // Move the segmented control up
                CGRect scoringTypeFrame = self.chooseScoringTypeSegmentedControl.frame;
                scoringTypeFrame.origin.y = scoringTypeFrame.origin.y - 70.0f;
                self.chooseScoringTypeSegmentedControl.frame = scoringTypeFrame;
    
                CGRect scoringTypeTextFrame = self.scoringChoiceText.frame;
                scoringTypeTextFrame.origin.y = scoringTypeTextFrame.origin.y - 70.0f;
                self.scoringChoiceText.frame = scoringTypeTextFrame;
    
    } 
    

    【讨论】:

      猜你喜欢
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2012-12-14
      • 2014-06-20
      相关资源
      最近更新 更多