Se meu superview for uma caixa medindo 10 unidades de cada lado, e meu subview tiver 20 unidades de largura, com clipsToBounds
definido como YES
, verei apenas a parte do subview que se encaixa dentro dos limites do superview. Caso contrário, se clipsToBounds
estiver definido como NO
, verei a subvisualização inteira, até mesmo as partes fora da visão geral (assumindo que ainda estejamos na tela).
Como um exemplo visual, considere as seguintes visualizações configuradas no storyboard:
Este é um UIView
rótulo branco no canto superior esquerdo com um simples "1" ou "2" para que eu possa discutir como view1
ou view2
. Além disso, a visualização em preto tem o mesmo tamanho que a visualização em branco, mas sua origem está no centro da visualização em branco.
No viewDidLoad
método do view controller , temos o seguinte código:
Objective-C:
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
Rápido:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
Quando executamos o código e olhamos no simulador ou no dispositivo, obtemos os seguintes resultados:
Portanto, apesar dessas visualizações serem configuradas de forma idêntica (exceto clipsToBounds
), elas parecem diferentes. Isso é o que clipsToBounds
faz. Definir como YES
fornecerá o resultado superior, enquanto defini-lo como NO
fornecerá o resultado inferior.
Se depurarmos a hierarquia de visualização, poderemos ver mais claramente que as caixas pretas realmente se estendem além das bordas da visualização em branco, mas apenas a visualização 2 mostra isso quando o aplicativo está realmente em execução:
UITextView
sombras não são visíveis, se aclipsToBounds
propriedade for igual atrue
; ? Se forfalse
, funciona bem