2011-12-20 9 views
24

W moim przykładzie mam 3 widoki: jeden widok czerwony zawierający dwa białe widoki. Zmieniam alfa na czerwony pojemnik na 0.3 i tak się dzieje (spójrz na obraz, aktualny wynik).Kontrolowanie zachowania UIView alfa dla subks wyświetleń iOS

Widząc to, mogę tylko założyć (powiedz mi, jeśli się mylę), że ustawienie alfa widoku spowoduje również ustawienie wszystkich jego alfa. Moje pytanie brzmi: czy istnieje sposób, aby po prostu powiedzieć czerwonemu widokowi, aby działał jako całość, aby ustawienie alfa dało coś, co wygląda jak pożądany wynik (na obrazku)?

results

Jest to wygląda bez alpha:

enter image description here

+0

W swoim "pożądanym wyniku" chcesz zobaczyć tło przez białe i czerwone widoki, czy nie? Jeśli nie, powinieneś użyć koloru niestandardowego z alfa 1. Subviews "dziedziczą" alfa z podglądu. Innym sposobem wypróbowania są warstwy, ale nie jestem pewien. –

Odpowiedz

12

Wyjazd możliwych kluczy UIKit dla Info.plist konkretnie UIViewGroupOpacity.

UIViewGroupOpacity (Boolean - iOS) określa, czy Core Animation podwarstwy dziedziczyć krycie ich superlayer.

Info.plist UIKit Keys

+0

Zgodnie z dokumentami klucz nie jest domyślnie, tzn. Nie dziedziczy. To dziwne, nie? Domyślne właściwości zachowania to dziedziczenie. http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW6 – Robert

+0

Poprawnie - nie rozumiem tego zarówno. Jeśli nie chcę dziedziczenia, czy ustawiam klawisz TAK lub NIE? Powiedziałem "NIE" i to nie rozwiązało moich problemów. – user798719

20

Aby rozwinąć na odpowiedź Marka: Jeśli ustawisz UIViewGroupOpacity w Info.plist, będzie to zmienić zachowanie dla wszystkich widoków w aplikacji, jeśli jesteś zainteresowany jedynie ustalenie świadczenia tego zwłaszcza widok, można również korzystać z tego fragmentu:

redContainerView.layer.shouldRasterize = YES; 
// No setting rasterizationScale, will cause blurry images on retina. 
redContainerView.layer.rasterizationScale = [[UIScreen mainScreen] scale]; 
+1

Uszczęśliwiłeś mnie. –

14

IOS nieruchomość alfa jest dziedziczona przez jego subviews. Jeśli ustawimy alpha 0.3 dla czerwonego widoku, oba widoki będą miały wartość alpha = 0.3. Nie ma sposobu, aby zatrzymać subview do dziedziczenia wartości alfa z jego super widoku.

Rozwiązaniem może być. Możesz ustawić kolor widoku czerwonego za pomocą alpha 0.3. Właściwość koloru nie zostanie wywołana przez jej wyeksportowanie. Możesz użyć poniższego kodu:

[redView setBackgroundColor:[UIColor colorWithHue:238.0f/255.0f saturation:24.0f/255.0f brightness:24.0f/255.0f alpha:0.3]]; 
+0

najlepsza odpowiedź imo. – user1563544

+1

Absolutnie najlepsza odpowiedź. Koncepcja, że ​​kolor ma alfa i widok ma alfa, z których każda ma różne zachowania, jest dość ważna. – Richard

+0

Wartość alfa nie jest dziedziczona przez subviews – lazi74

Powiązane problemy