UIViewサブクラスオブジェクトのアルファ値を設定する際に問題があります。助言がありますか?UIView alpha problem
輝度を制御するためのアルファプロパティを持つUIViewプロジェクトがあります。次のように私はUIViewのサブクラスにおいてalphaプロパティの値を設定するUISliderコントロールを使用しています:
-(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プロパティを切り替えるときに発生します。私はYESに.hiddenプロパティを変更すると、
theSlider.hidden = YES;
スライダーが消え、しかしOverlayViewオブジェクトのアルファ値が0.0にリセットします。スライダの値は変更されません。
sliderValueChangedメソッドによって設定されたOverlayViewのalphaプロパティが、UISliderオブジェクトの隠されたプロパティが変更されても変更されないようにします。
私が間違っていることについてのご意見はありますか?ありがとう。
おかげ?。スライダは値を保持します。 sl iderValueChanged:非常に簡単です。 - (ボイド)がsliderValueChanged:(ID)、送信者{ \t \t //分= 0.2 \t //最大= 1.0 \t \t UISlider *対照=(UISlider *)差出人。 \t \t float theValue = control.value; \t \t \t \t \t theValue = -1.0 *(theValue - 1.0)+ 0.01; \t \t self.overlayView.alpha = theValue; \t \t 注意事項:コードは、iPhoneシミュレータで実行すると期待どおりに動作します。この問題は、デバイス上で実行されると実現します。 –