如何以编程方式指定UISegmentedControl
的位置?设置框架什么都不做。似乎mySegmentedControl.frame
返回按钮的框架而不是“边界矩形”。
我应该注意到我正在使用的分段控件是通过界面构建器添加的。
编辑 - 更多信息:所以我刚刚了解到分段控件通常会出现像UIToolbar
这样的内容。所以我已经为故事板为我创建的工具栏创建了一个IBOutlet
引用。当我记录这个工具栏的位置时,我可以看到y位置与我想要的一样。但是,设置此工具栏的框架似乎不会移动它。
答案 0 :(得分:2)
设置框架是正确的方法。您的项目还有其他问题。您可以使用带有UIButton和UISegmentedControl的简单单一视图项目来测试它:
- (IBAction)buttonTapped:(id)sender {
self.segmentedControl.frame = ((UIButton*)sender).frame;
((UIButton*)sender).hidden = YES;
}
这将设置具有相同位置的分段控件。大小为按钮,然后隐藏按钮。
答案 1 :(得分:1)
奇怪的是,你不能只改变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;
}