Nach der Dokumentation für UIVIew @property(nonatomic) CGFloat alpha
Der Wert dieser Eigenschaft ist eine Gleitkommazahl im Bereich von 0,0 bis 1,0, wobei 0,0 für vollständig transparent und 1,0 für vollständig undurchsichtig steht. Dieser Wert wirkt sich nur auf die aktuelle Ansicht und auf keine der eingebetteten Unteransichten aus.
Ich habe eine Containeransicht wie folgt konfiguriert:
self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];
Fügen Sie dann Unteransichten zu 'myView' hinzu.
[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected
Aber ' anotherView ' hat Alpha auf dem Bildschirm (es ist nicht wie erwartet undurchsichtig)
Wie kann das sein und was kann getan werden?
ios
objective-c
uiview
alpha-transparency
Avner Barr
quelle
quelle
self.myView
? und fügen Sie eine andere Ansicht wie[self.self addSubview:self.myView];
alpha
Wert, der allealpha
Werte der Unteransichten multipliziert. Wenn z. B. das Alpha der Unteransichten0.8
und das Alpha der Übersicht war1.0
, Sie es jedoch ändern,0.6
ist das Alpha der Unteransichten immer noch dasselbe0.8
. Der Alpha-Wert der gerenderten Unteransicht wird nur von0.8
bis geändert0.48
.Antworten:
Ich denke, das ist ein Fehler in der Dokumentation. Sie sollten es unter bugreport.apple.com ablegen.
Alles, was ich nach ein paar kurzen Recherchen sehen kann, legt nahe, dass Sie sehen, wie es sich immer verhalten hat, und meine eigenen Tests zeigen es auch.
Das Alpha einer Ansicht wird auf alle Unteransichten angewendet.
Vielleicht brauchen Sie nur,
[[UIColor blackColor] colorWithAlphaComponent:0.5]
aber wenn nicht, müssen Sie die Ansicht zu einem Geschwister anstatt zu einem Kind machen.quelle
Stellen Sie das Alpha nicht direkt in der übergeordneten Ansicht ein. Verwenden Sie stattdessen die folgende Codezeile, um die übergeordnete Ansicht transparent zu machen, ohne die untergeordneten Ansichten zu beeinträchtigen.
[parentView setBackgroundColor: [[UIColor clearColor] colorWithAlphaComponent: 0.5]];
quelle
In kurzer Zeit
AKTUALISIERT FÜR SWIFT 3
quelle
Das Festlegen der Deckkraft der Hintergrundfarbe anstelle von Alpha wirkt sich nicht auf die untergeordneten Ansichten aus.
Oder Sie können programmgesteuert einstellen
Das ist es. Viel Spaß beim Codieren !!!
quelle
Wenn Sie Storyboards mögen, geben Sie ein
User Defined Runtime Attribute
für Ihre Ansicht in das Feld einIdentity Inspector
:Key Path: backgroundColor
,Type: Color
,Value:
ZB weiße Farbe mit Opazität 50%.quelle
Die einfachste Lösung besteht darin, das Alpha wie folgt zu ändern: Die aktualisierte Version für Xcode 8 Swift 3 lautet:
Ziel c:
Weitere Informationen finden Sie in den Apple Developer Docs: https://developer.apple.com/reference/uikit/uiview/1622417-alpha
quelle
In Swift 4.2 und Xcode 10.1
Fügen Sie keine Farbe und keinen Alpha-Wert über das Storyboard hinzu. In diesem Fall funktioniert nur ein programmatischer Ansatz.
quelle
Hier ist eine etwas komplexe Lösung:
Verwenden Sie eine
container
Ansicht als ÜbersichtanotherView
undmyView
sind beide Unteransichten incontainer
,anotherView
ist keine Unteransicht inmyView
.quelle
Derzeit gibt es nur eine Möglichkeit, die übergeordnete Ansicht transparent zu machen und keine untergeordneten Ansichten in die übergeordnete Ansicht einzufügen (keine Ansichten als Unteransicht einzufügen). Diese untergeordneten Ansichten werden außerhalb der übergeordneten Ansicht platziert. Um die übergeordnete Ansicht transparent zu machen, können Sie dies über das Storyboard tun.
Platzieren Sie die andere Ansicht außerhalb der übergeordneten Ansicht. Es wird wie ein Zauber wirken.
quelle
Bitte beachten Sie die fett gedruckte Beschreibung in der Xcode-Dokumentation.
quelle