设置UISlider的最大值导致奇怪的行为

时间:2014-01-30 05:06:49

标签: ios objective-c uislider

当我将滑块的maximumValue更改为>时,我尝试使用UISlider时遇到了一个非常奇怪的问题。 1.0,我在我的视图中出现了这个奇怪的重复滑块。请帮助:)

当slider.maximumValue = 10.0时,它看起来像什么; http://imagizer.imageshack.us/v2/800x600q90/827/kf12.png

当slider.maximumValue = 1.0时看到它的样子; http://imagizer.imageshack.us/v2/800x600q90/197/bcvf.png

我是否缺少一些UISlider的行为?这是我配置滑块的代码......

-(void)layoutSubviews
{
    [super layoutSubviews];

    CGSize viewSize = self.contentSubview.bounds.size;

    self.timeSlider.frame = CGRectMake(viewSize.width / 2 - 80,
                                       viewSize.height / 2 - 12,
                                       viewSize.width / 2,
                                       24);

    -(void)configureSubviews
    {
        [super configureSubviews];

        self.timeSlider = [[UISlider alloc] initWithFrame:CGRectZero];
        self.timeSlider.continuous = YES;
        self.timeSlider.minimumValue = 0;
        self.timeSlider.maximumValue = 1.0f;
        [self.timeSlider addTarget:self action:@selector(timeValueChanged:) forControlEvents:UIControlEventValueChanged];
        [self.contentSubview addSubview:self.timeSlider];

    }

    -(void)timeValueChanged:(UISlider *)slider
    {
        self.timeValueLabel.text = [NSString stringWithFormat:@"%d min", (int)floorf(slider.value)];
        [self layoutSubviews];
    }

1 个答案:

答案 0 :(得分:0)

<强> layoutSubviews 布置子视图。

- (void)layoutSubviews

<强>讨论

此方法的默认实现在iOS 5.1及更早版本中不执行任何操作。否则,默认实现使用您设置的任何约束来确定任何子视图的大小和位置。

子类可以根据需要覆盖此方法,以执行其子视图的更精确布局。仅当子视图的自动调整大小和基于约束的行为不提供所需的行为时,才应覆盖此方法。您可以使用实现直接设置子视图的框架矩形。

您不应直接调用此方法。如果要强制进行布局更新,请在下次绘图更新之前调用 setNeedsLayout 方法。如果您想立即更新视图的布局,请调用 layoutIfNeeded 方法。

apple doc

的反对意见