1

muZZkatのカスタム範囲スライダーを使用しています:NMRangeSlider @ github 1

しかし、スライダーをフェードする必要があります。範囲スライダーを作成するとき、それをコンテンツビューに配置します。コンテンツビューのアルファを.7に設定してみました

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

sliderView.alpha = .4;

しかし、それは望ましい効果を与えません:

ここに画像の説明を入力してください

また、UIImageViewupperHandleとlowerHandleがフェードアウトし、背景トラック(青い部分)が表示されます。ハンドルのアルファを高くして、後ろの青い部分が見えないようにします。

レンジャースライダークラスにメソッドを追加してみました。

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

しかし、これはアルファをまったく変更しません。

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];
}

ここでアルファを低く設定すると、機能します。

他の場所からアルファを変更できない理由がわかりませんか?

4

1 に答える 1

1

NMRangeSlider-Demoを追加して、チェックアウトしました。問題は、おそらくviewDidLoadメソッドでtoggleAlphaを呼び出していることだと思いますよね?

代わりに、viewDidAppearメソッドを呼び出す必要があります。NMRangeSliderクラスのlayoutSubviewsメソッド(次にaddSubviewを呼び出す)は、viewDidLoadの後、viewDidAppearの前に呼び出されるため、viewDidLoadで行うことはすべて、サブビューがaddSubviewメソッドで初期化されるときにリセットされます。

viewDidAppearにtoggleAlphaを追加するだけでうまくいきました。

于 2013-01-31T23:45:41.757 に答える