UIView サブクラス オブジェクトのアルファ値の設定に問題があります。助言がありますか?
明るさを制御するために操作しているアルファ プロパティを持つ UIView プロジェクトがあります。UISlider コントロールを使用して、次のように UIView サブクラスの alpha プロパティの値を設定しています。
-(id)initWithFrame:(CGRect)rect andParent:(id)theParent {
self = [super initWithFrame: rect];
if (self !=nil) {
[self setParent:theParent];
theSlider = [[UISlider alloc] initWithFrame: CGRectMake(35.0,400.0,250,0)];
theSlider.minimumValue = 0.2;
theSlider.maximumValue = 1.0;
theSlider.value = 1.0;
theSlider.continuous = YES;
UIImage *maximumValueImage = [UIImage imageNamed:@"BrightSun.png"];
UIImage *minimumValueImage = [UIImage imageNamed:@"DimSun.png"];
theSlider.maximumValueImage = maximumValueImage;
theSlider.minimumValueImage = minimumValueImage;
theSlider.hidden = NO;
[theSlider addTarget:parent action: @selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[self addSubview:theSlider];
}
return self;
}
親オブジェクトのsliderValueChangedメソッドは、別のUIViewサブクラス オブジェクトであるOverlayViewのアルファ値を変更します。親オブジェクトは、UIViewController のサブクラスである myViewController です。スライダーは、SliderView という名前の 2 番目の UIView サブクラスにあります。
- (void) sliderValueChanged: (id)sender {
//min = 0.2
//max = 1.0
UISlider *control = (UISlider *)sender;
float theValue = control.value;
theValue = -1.0 * (theValue - 1.0) + 0.01;
self.overlayView.alpha = theValue;
}
これはうまくいくようです。UISlider の .hidden プロパティを切り替えようとすると、問題が発生します。.hidden プロパティを YES に変更すると、
theSlider.hidden = YES;
スライダーは消えますが、OverlayView オブジェクトのアルファ値は 0.0 にリセットされます。スライダーの値は変わりません。
UISlider オブジェクトの非表示プロパティが変更されたときに、sliderValueChanged メソッドによって設定された OverlayView の alpha プロパティを変更しないようにします。
私が間違っていることに関する提案はありますか?ありがとう。