在自定义范围滑块上设置alpha(NMRangerSlider)

时间:2013-01-31 22:52:10

标签: ios objective-c

我正在使用muZZkat的自定义范围滑块:NMRangeSlider @ github 1

但我需要淡化滑块。当我创建范围滑块时,我将其放入内容视图中。我已经尝试将内容视图的alpha设置为.7

UIView *sliderView = [self configureLabelSliderWithSize:CGSizeMake(300, 70)];

sliderView.alpha = .4;

但它没有产生预期的效果:

enter image description here

UIImageView upperHandle和lowerHandle也淡出,显示背景音轨(蓝色部分)。我宁愿让手柄的alpha更高,所以你看不到它背后的蓝色部分。

我尝试在游侠滑块类中添加一个方法:

-(void)toggleAlpha {
    self.trackBackground.alpha = .3;
    self.track.alpha = .3;
    self.lowerHandle.alpha = .3;
    self.upperHandle.alpha = .3;
}

但这根本不会改变alpha。

UIImageViews在-(void)addSubviews方法中都是初始化的:

- (void) addSubviews
{
    //------------------------------
    // Track Brackground
    self.trackBackground = [[UIImageView alloc] initWithImage:self.trackBackgroundImage];
    self.trackBackground.frame = [self trackBackgroundRect];

    //------------------------------
    // Track
    self.track = [[UIImageView alloc] initWithImage:self.trackImage];
    self.track.frame = [self trackRect];

    //------------------------------
    // Lower Handle Handle
    self.lowerHandle = [[UIImageView alloc] initWithImage:self.lowerHandleImageNormal highlightedImage:self.lowerHandleImageHighlighted];
    self.lowerHandle.frame = [self thumbRectForValue:_lowerValue image:self.lowerHandleImageNormal];

    //------------------------------
    // Upper Handle Handle
    self.upperHandle = [[UIImageView alloc] initWithImage:self.upperHandleImageNormal highlightedImage:self.upperHandleImageHighlighted];
    self.upperHandle.frame = [self thumbRectForValue:_upperValue image:self.upperHandleImageNormal];

    [self addSubview:self.trackBackground];
    [self addSubview:self.track];
    [self addSubview:self.lowerHandle];
    [self addSubview:self.upperHandle];
}

如果我在这里将alpha设置得更低,那就可以了。

我不明白为什么我不能从其他任何地方改变alpha?

1 个答案:

答案 0 :(得分:1)

我刚刚添加了NMRangeSlider-Demo并将其检出。 我认为问题是你可能在viewDidLoad方法中调用 toggleAlpha ,对吗?

您应该在viewDidAppear方法中调用,因为在SouthernDanSlider类中调用layoutSubviews方法(进而调用addSubview),在viewDidLoad之后和viewDidAppear之前调用,因此无论您在viewDidLoad中执行什么操作都将在子视图初始化时重置addSubview方法。

在viewDidAppear中添加toggleAlpha只为我工作。