【问题标题】:iOS UISegmentedControl cannot position programmaticallyiOS UISegmentedControl 无法以编程方式定位
【发布时间】:2013-03-10 07:32:21
【问题描述】:

我无法更改 UISegmentedControl 的位置。如果我这样做:

segControl2.frame = CGRectMake( segControl1.origin.x, segControl2.origin.y, segControl2.size.width, segControl2.size.height);

什么都没有真正改变,每个人都说改变控件的框架应该可以,但事实并非如此。

【问题讨论】:

  • 在这个问题中以高票查看答案。答案包含一种通过代码将uisegment添加到视图的好方法。 stackoverflow.com/questions/6688160/…
  • 子视图添加了吗??
  • 可能还有其他因素影响您的分段控件的放置。请分享更多代码。

标签: ios objective-c


【解决方案1】:

这可以是“自动布局”,您可以尝试以编程方式创建您的 UISegmentedControl。

【讨论】:

    【解决方案2】:

    要在添加为子视图后更改任何元素的位置,可以使用以下命令:

    CGRect frame = segControl2.frame;
    frame.origin.x = segControl1.frame.origin.x;
    // for changes to other properties, do likewise. if no changes, don't do anything
    frame.origin.y = ...
    
    segControl2.frame = frame;
    

    【讨论】:

    • 这对我不起作用。调试的时候我是一行一行的,所以我可以清楚的看到frame.origina.x在我把x设置为一个较小的值之后真的发生了变化,把控件向右移动了,但是什么也没发生,控件不动。我在 nib 中创建了控件,并且正在 viewDidLoad 方法中编写代码。
    • 这很奇怪。我已经使用这种方法来定位几乎所有在情节提要中或以编程方式创建的元素。也许您的问题不在于代码,而在于 IB 中设置的参数,或者您将 UISegmentedControl 放在哪里。
    • 我可以使用控件的相同属性来更改 UISegmentedControlStyle,所以我猜它被正确地钩住了。
    • 那么你把 UISegmentedControl 放在笔尖的什么地方了?在导航栏中?在 UIView 中?
    • 它不仅仅是 UISementedControl,我现在检查了它。我也不能移动文本框。它是一个简单的 nib,没有情节提要,并且是一个带有 viewDidLoad 方法的简单类。我真的很困惑,这应该可以工作。
    【解决方案3】:
    CGRect frame = [[UIScreen mainScreen] bounds];
    UISegmentedControl *segControl = [[UISegmentedControl] initWithItems:[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil];
    segControl.frame = CGRectMake(frame.origin.x + 50, frame.origin.y + 50, segControl.size.width, segControl.size.height);
    [view addSubview:segControl];
    

    应该可以正常工作。

    【讨论】:

    • 如果我有已经在 nib 中创建的控件,我不会在代码中创建它。那么为什么改变框架不起作用呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2011-07-13
    相关资源
    最近更新 更多