CGFloat MinimumValue与CurrentValue

时间:2017-10-22 14:11:41

标签: ios uiview uiviewcontroller cgfloat

我创建了一个带有uiview类的自定义滑块......一切正常但我只是有问题...

在我的视图控制器中

以这种方式实现Custom Slider类

主ViewController

#pragma mark SMALL STATS
-(KPStatsSlider *)statsSlider {
    if (!_statsSlider) {
        _statsSlider = [[KPStatsSlider alloc] init];
        _statsSlider.minimumValue = 18;
        _statsSlider.maximumValue = 30;
        _statsSlider.currentValue = 12;


        _statsSlider.translatesAutoresizingMaskIntoConstraints = NO;
        [self.view addSubview:self.statsSlider];

        [self.statsSlider.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:115].active = YES;
        [self.statsSlider.rightAnchor constraintEqualToAnchor:self.view.rightAnchor constant:0].active = YES;
        [self.statsSlider.heightAnchor constraintEqualToConstant:70].active = YES;
        [self.statsSlider.leftAnchor constraintEqualToAnchor:self.view.centerXAnchor constant:0].active = YES;

    }
    return _statsSlider;
}

如您所见,我可以分配值: 当前/ 最低/ 最大

在我的个性化UIView中,我实现了这个功能,以防止CurrentValue值小于MinimumValue,但我无法让它运行,你可以帮助我吗?

自定义滑块UIView

- (instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor clearColor];
        [self defaultValue];
        [self setupStatsTitle];
        [self trackLine];


        if (self.currentValue <= self.minimumValue) {
            self.currentValue = self.minimumValue;
        }

    }
    return self;
}

1 个答案:

答案 0 :(得分:1)

好像你想要

if (self.currentValue <= self.minimumValue) {
    self.currentValue = self.minimumValue;
}

currentValue的制定者中。例如:

- (void)setCurrentValue:(CGFloat)currentValue {
    _currentValue = currentValue;
    if (_currentValue < self.minimumValue) {
        _currentValue = self.minimumValue;
    }
    if (_currentValue > self.maximumValue) {
        _currentValue = self.maximumValue
    }
}

您的代码目前仅检查滑块初始化的时间,但如果稍后设置了currentValue则不会。

一般情况下,如果我在该实例变量的setter / getter中,我更喜欢直接访问实例变量,以避免混淆和可能的无限递归,但是你编写的代码是可以的。