Ustawienie alpha Na UIView ustawia alpha na jej podwidach, które nie powinny się zdarzyć
Zgodnie z dokumentacją dla UIVIew @property(nonatomic) CGFloat alpha
Wartość tej właściwości jest liczbą zmiennoprzecinkową z zakresu 0.0 do 1.0, gdzie 0.0 oznacza całkowicie przezroczysty, a 1.0 oznacza całkowicie nieprzezroczyste. ta wartość ma wpływ tylko na bieżący widok i nie ma wpływu na żaden z jego osadzonych podglądów podrzędnych.
Mam widok kontenera skonfigurowany w następujący sposób:
self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];
A następnie dodaj podview do 'myView'
[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected
Ale " anotherView " mA Alfę na ekranie (nie jest nieprzezroczysta zgodnie z oczekiwaniami)
Jak to możliwe i co można zrobić?8 answers
Myślę, że to błąd w dokumentacji. Należy go złożyć na bugreport.apple.com.
Wszystko, co widzę po krótkim badaniu, sugeruje, że widzisz to, jak zawsze się zachowywało, a moje własne testy również to pokazują.
Alfa widoku jest stosowana do wszystkich podwidywań.
Być może wszystko czego potrzebujesz to [[UIColor blackColor] colorWithAlphaComponent:0.5]
, ale jeśli nie, będziesz musiał uczynić widok rodzeństwem zamiast dzieckiem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-08 08:52:31
Nie ustawiaj Alfy bezpośrednio w widoku nadrzędnym. Zamiast tego użyj poniższej linii kodu, która zastosuje przezroczystość do widoku parentview bez wpływu na widoki potomne.
[parentView setBackgroundColor: [[uicolor clearColor] colorWithAlphaComponent:0.5]];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-27 09:41:34
In swift
view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
AKTUALIZACJA DLA SWIFT 3
view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-12 17:53:26
Jeśli lubisz storyboardy, umieść User Defined Runtime Attribute
dla swojego widoku w Identity Inspector
:
Key Path: backgroundColor
, Type: Color
, Value:
np. kolor biały z nieprzezroczystością 50 %.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-05 12:54:20
Ustawienie krycia koloru tła zamiast alfa nie będzie miało wpływu na widoki potomne.
- Wybierz widok.
- Przejdź do inspektora atrybutów niż kolor tła
- Kliknij na "inne"
- Ustaw krycie na 30%
To wszystko. Szczęśliwego Kodowania!!!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-25 14:18:37
Najprostszym rozwiązaniem jest zmiana Alfy w następujący sposób : Zaktualizowana wersja dla Xcode 8 Swift 3 to:
yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
Objective C:
yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
Zapoznaj się z dokumentami Apple Developer Docs tutaj : https://developer.apple.com/reference/uikit/uiview/1622417-alpha
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-14 11:39:58
Oto nieco złożone rozwiązanie:
UIView *container;
UIView *myView;
UIView *anotherView;
myView.alpha = 0.5;
[container addSubview:myView];
anotherView.alpha = 1;
[container addSubview:anotherView];
Użyj widoku container
jako superview, anotherView
i myView
są zarówno subview w container
, anotherView
nie jest subview w myView
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-17 03:39:52
Na razie jest tylko jeden sposób, aby widok rodzica był przezroczysty i nie umieszczał żadnych widoków potomnych w widoku rodzica( nie umieszczał żadnych widoków jako subview). Aby widok rodzica był przezroczysty, możesz to zrobić za pomocą storyboard.
//Transparent the parentView
parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
Umieść drugi widok poza widokiem nadrzędnym. Będzie działać jak urok.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-26 13:30:28