Gostaria de saber como usar o UIViewimóvel clipsToBounds.
A documentação oficial diz o seguinte:
clipsToBoundspropriedade
Um valor booleano que determina se as subvisualizações estão confinadas aos limites da exibição.
Discussão
Definir este valor para YESfaz com que as subvisualizações sejam recortadas para os limites do receptor. Se definido como NO, as subvisualizações cujos quadros se estendem além dos limites visíveis do receptor não são cortadas. O valor padrão é NO.
Mas não estou certo do que isso significa exatamente. Como devo usar clipsToBounds? Quais são as consequências de definir YESexatamente essa propriedade ? Ou para NO?
Se meu superview for uma caixa medindo 10 unidades de cada lado, e meu subview tiver 20 unidades de largura, com clipsToBoundsdefinido como YES, verei apenas a parte do subview que se encaixa dentro dos limites do superview. Caso contrário, se clipsToBoundsestiver 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 UIViewrótulo branco no canto superior esquerdo com um simples "1" ou "2" para que eu possa discutir como view1ou 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 viewDidLoadmétodo do view controller , temos o seguinte código:
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 clipsToBoundsfaz. Definir como YESfornecerá o resultado superior, enquanto defini-lo como NOfornecerá 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:
Resposta fantástica! Bem feito. Mas eu tenho uma pergunta. Por que as UITextViewsombras não são visíveis, se a clipsToBoundspropriedade for igual a true; ? Se for false, funciona bem
Mannopson
1
Nota: É a visualização pai em que você altera clipsToBounds. Portanto, se viewB é uma subvisão de viewA. É viewA que clipsToBounds precisa se tornar verdadeiro.
aestusLabs
Qual visualização mostrada do quadro de visualização original nessa visualização está funcionando com o gesto de toque, porque eu verifico e não está funcionando.
Pravin Tate
2
Esta é uma resposta sucinta e rápida vs. a resposta aceita
Se a Apple foi para renomear esta propriedade, eu nomeá-lo: clipSubviewsToBounds.
Acabei de encontrar um bug em nosso código. Onde a altura da visualização principal foi definida 0. Esperávamos ver nenhum de seus elementos. Ainda assim, o conteúdo da visão pai estava aparecendo.
Foi porque clipToBoundsnão foi definido para true. Depois que isso é definido true, as alturas das subvisualizações não podem se estender além 0, portanto, elas não aparecem de forma alguma.
UITextView
sombras não são visíveis, se aclipsToBounds
propriedade for igual atrue
; ? Se forfalse
, funciona bemEsta é uma resposta sucinta e rápida vs. a resposta aceita
Se a Apple foi para renomear esta propriedade, eu nomeá-lo:
clipSubviewsToBounds
.Acabei de encontrar um bug em nosso código. Onde a altura da visualização principal foi definida
0
. Esperávamos ver nenhum de seus elementos. Ainda assim, o conteúdo da visão pai estava aparecendo.Foi porque
clipToBounds
não foi definido paratrue
. Depois que isso é definidotrue
, as alturas das subvisualizações não podem se estender além0
, portanto, elas não aparecem de forma alguma.fonte