UISlider анимация с альфа - PullRequest
       18

UISlider анимация с альфа

0 голосов
/ 04 сентября 2011

Я пытаюсь сделать UISlider такими, которые оживляют, когда их нельзя использовать.

Вот код моего подкласса UISlider:

    - (void)setSymbol:(NSString *)s {
symbol = s;

float newValue = [[S76PresetManager sharedManager] getValueForKey:symbol];
[self setValue:newValue animated:YES];  

if (symbol == @"" || symbol == @"e_none") {
    // gray out the slider
    [self setUserInteractionEnabled:NO];
    [UIView beginAnimations:nil context:nil];       
    [UIView setAnimationDuration:0.5];

    [self setAlpha:0.5];

    [UIView commitAnimations];

} else {
    // reactivate the slider
    [self setUserInteractionEnabled:YES];
    [UIView beginAnimations:nil context:nil];       
    [UIView setAnimationDuration:0.5];

    [self setAlpha:1.0];

    [UIView commitAnimations];      
}

}

Если для свойства символа ползунка установлено значение @ "" или @ "e_none", оно будет затенять ползунок и не будет интерактивным.Однако в некоторых случаях строка [self setValue:newValue animated:YES], похоже, "отменяет" анимацию setAlpha.

Есть ли способ одновременно установить значение ползунка и изменить его альфа с помощью анимации UIView?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

В UISlider есть ошибка, из-за которой значение альфа 0,5 игнорируется.

UISlider игнорирует альфа при установке на 0,5

Я изменил [self setAlpha: 0.5] на [self setAlpha: 0.49], и он работает как нужно.

0 голосов
/ 04 сентября 2011

Я не уверен в этом ... но, возможно, написание кода следующим образом может помочь.

[self setUserInteractionEnabled:NO];

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:0.5];

self.alpha = 0.5;
self.value = newValue;

[UIView commitAnimations];

OR Другой способ, о котором я могу думать, это переопределить метод setValueAnimated и изменить альфа в этом

...