2011-01-13 9 views
10

Dlaczego widok UISlider ignoruje widok alfa po ustawieniu na 0.5?UISlider ignoruje alfa po ustawieniu na 0.5

Kod:

for (int i = 0; i < 3; i++) { 
    UISlider *slider = [[[UISlider alloc] 
         initWithFrame:CGRectMake(0, i * 30, 200, 30)] 
         autorelease]; 
    slider.alpha = 0.4 + (CGFloat)i/10.0f; 
    [window addSubview:slider]; 
} 

Wynik:

Example screenshot

Suwaki posiadają a wartości 0,4, 0,5 i 0,6. I jak widać środkowy z 0,5 jest całkowicie nieprzejrzysty. Szwy występują tylko w przypadku alfa 0.5. Przetestowałem inne kontrolery interfejsu użytkownika i działają one zgodnie z oczekiwaniami, alfa ma wartość 0,5.

Reprodukcja z iOS 4.2 na prawdziwym urządzeniu oraz z iOS 3.2 i 4.2 w symulatorze.

BTW, jeśli ktoś ciekawi jak i dlaczego uderzyłem w ten problem, jest to przesuwna konfiguracja padów dla gry o nazwie Slippy.

+4

Spędzając kilka minut na samodzielnym graniu, z pewnością wygląda jak błąd. Sugerowałbym złożenie raportu o błędzie w Apple - http://developer.apple.com/bugreporter/ – Eric

+0

Poinformowałem go teraz o jabłkach. Aktualizacja nastąpi, gdy dowiem się więcej. –

+0

Brak odpowiedzi od Apple –

Odpowiedz

1

Jak pan powiedział, że inne kontrolery UI pracować z 0,5 alfa, nie powinno być żadnej różnicy z UISlider, gdyż oni odziedziczą alpha property z UIView klasy i nie ma odniesienia do opaque property ("Zawsze należy ustawić wartość tej właściwości NIE, jeśli widok jest całkowicie lub częściowo przezroczysty "). Może możesz spróbować postępować zgodnie z radą.

Jeśli istnieje naprawdę bug 0,5 wartości, można po prostu zmienić przezroczystość początkową od 0,4 do 0,41/0,39 W/O jakiejkolwiek widocznej różnicy:

slider.alpha = 0.41f + (CGFloat)i/10.0f; 

Wreszcie, można wyjście otrzymany alpha wartości niektóre etykiety sprawdzają, czy są oczekiwane, lub wyświetlają wartość (CGFloat)i, aby zobaczyć, czy coś jest nie tak z rzutowaniem typu.

+0

slider.opaque = NO również nie działa. Zarejestrowałem również wartość alfa za pomocą NSLog (@ "% f", slider.alpha) i wydrukowano 0.4, 0.5 i 0.6. W aplikacji, w której występuje ten błąd, mam tylko jeden suwak, pętla miała tylko zilustrować problem. Dzięki za sugestie. –