De acordo com a documentação para UIVIew @property(nonatomic) CGFloat alpha
O valor dessa propriedade é um número de ponto flutuante no intervalo de 0,0 a 1,0, onde 0,0 representa totalmente transparente e 1,0 representa totalmente opaco. Este valor afeta apenas a visualização atual e não afeta nenhuma de suas subvisualizações incorporadas.
Eu tenho uma visualização de contêiner configurada da seguinte maneira:
self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];
E então adicione subvisualizações a 'myView'
[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected
Mas ' anotherView ' tem alfa na tela (não é opaco como esperado)
Como pode ser e o que pode ser feito?
ios
objective-c
uiview
alpha-transparency
Avner Barr
fonte
fonte
self.myView
? e adicionar outra visualização , como[self.self addSubview:self.myView];
alpha
valor que é o valor de todas as subvisualizaçõesalpha
, multiplicado. por exemplo, se o alfa do subviews0.8
e o alfa do superview eram1.0
, mas você alterou para0.6
, o alfa do subviews ainda é o mesmo0.8
,. o valor alfa da subvisualização renderizada é alterado apenas de0.8
para0.48
.Respostas:
Acho que é um bug na documentação. Você deve registrá-lo em bugreport.apple.com.
Tudo o que posso ver depois de um pouco de pesquisa rápida sugere que o que você está vendo é como sempre se comportou, e meus próprios testes mostram isso também.
O alfa de uma visualização é aplicado a todas as subvisualizações.
Talvez tudo de que você precise é,
[[UIColor blackColor] colorWithAlphaComponent:0.5]
mas caso contrário, você precisará tornar a vista um irmão em vez de uma criança.fonte
Não defina o alfa diretamente na visualização pai. Em vez disso, use a linha de código abaixo que aplicará transparência à visão pai sem afetar suas visões filho.
[parentView setBackgroundColor: [[UIColor clearColor] colorWithAlphaComponent: 0,5]];
fonte
Em rapidez
view.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
ATUALIZADO PARA SWIFT 3
view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
fonte
Definir opacidade da cor de fundo em vez de alfa não afetará suas visualizações filhas.
Ou você pode definir por programaticamente
var customView:UIView = UIView() customView.layer.opacity = 0.3
É isso aí. Happy Coding !!!
fonte
Se você gosta de Storyboards, coloque um
User Defined Runtime Attribute
para sua visualização noIdentity Inspector
:Key Path: backgroundColor
, por exemploType: Color
,Value:
cor branca com opacidade 50%.fonte
A solução mais simples, conforme discutido, é alterar o alfa da seguinte maneira: A versão atualizada do Xcode 8 Swift 3 é:
yourParentView.backgroundColor = UIColor.black.withAlphaComponent(0.4)
Objetivo C:
yourParentView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
Consulte Apple Developer Docs aqui: https://developer.apple.com/reference/uikit/uiview/1622417-alpha
fonte
Em Swift 4.2 e Xcode 10.1
Não adicione cor e valor alfa por meio do storyboard. Apenas a abordagem programática funcionará neste caso.
transparentView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
fonte
Aqui está uma solução um pouco complexa:
UIView *container; UIView *myView; UIView *anotherView; myView.alpha = 0.5; [container addSubview:myView]; anotherView.alpha = 1; [container addSubview:anotherView];
Use uma
container
visualização como supervisão,anotherView
emyView
ambas são subvisualizações emcontainer
,anotherView
não é uma subvisualização emmyView
.fonte
Por enquanto, há apenas uma maneira de tornar a visão pai transparente e não colocar nenhuma visão filha dentro (não coloque nenhuma visão como subvisão) da visão pai, coloque as visões filho fora da visão pai. Para tornar a visão dos pais transparente, você pode fazer isso por meio do storyboard.
//Transparent the parentView parentView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
Coloque a outra visão fora da visão pai. Vai funcionar como um encanto.
fonte
Consulte a descrição em negrito da documentação do Xcode.
fonte