1

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

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

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

sliderView.alpha = .4;

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

在此处输入图像描述

upperHandleUIImageView和 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?

4

1 回答 1

1

我刚刚添加了 NMRangeSlider-Demo 并检查了它。我认为问题在于您可能在 viewDidLoad 方法中调用了 toggleAlpha ,对吗?

您应该调用 viewDidAppear 方法,因为 NMRangeSlider 类中的 layoutSubviews 方法(又调用 addSubview)是在 viewDidLoad 之后和 viewDidAppear 之前调用的,因此您在 viewDidLoad 中所做的任何事情都将在 addSubview 方法中初始化子视图时被重置。

只需在 viewDidAppear 中添加 toggleAlpha 对我有用。

于 2013-01-31T23:45:41.757 回答