Pergunta sobre ios, bounds, frame, calayer – CALAker frame.size não é igual a bounds.size

3

Aconteceu algo estranho para mim no CALayer.E finalmente encontrei o frame.size do CALayer não igual ao seu bounds.size, que eu não conseguia entender.Eu sei que o frame está no sistema de coordenadas do super e bounds é sua própria coordenada, e o caso usual é frame.origin não é igual a bounds.origin, mas frame.size é igual a bounds.size.

Transforme na super camada e em si keywind
você aplicou e transformou na sub-visão? como rotação? dhilipsiva

Sua resposta

1   a resposta
7

como Apple diz na documentação para a propriedade de quadro.

Aviso Se a propriedade transform não for a transformação de identidade, o valor dessa propriedade será indefinido e, portanto, deverá ser ignorado.

...

Alterações nessa propriedade podem ser animadas. No entanto, se a propriedade de transformação contiver uma transformação de não identidade, o valor da propriedade de quadro será indefinido e não deverá ser modificado. Nesse caso, você pode reposicionar a exibição usando a propriedade center e ajustar o tamanho usando a propriedade bounds.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

Se você não tiver uma transformação aplicada, a origem pode ser diferente, mas o tamanho deve permanecer o mesmo que o ajuste de um para o outro.

O tamanho do retângulo de limites é acoplado ao tamanho do retângulo do quadro, de forma que as alterações em um afetam o outro.

Se o valor do quadro é indefinido e, portanto, deve ser ignorado, como o sistema decide onde desenhar a camada? Na verdade, o que me confunde é que minha camada é sempre maior do que o limite da camada. keywind
ele usa a propriedade center, "Nesse caso, você pode reposicionar a visualização usando a propriedade center e ajustar o tamanho usando a propriedade bounds." Está tudo na documentação. E faz todo sentido, quando você gira algo, o "quadrado" que o contém deve crescer, portanto, os limites definem o tamanho do quadrado interno e o quadro do quadrado que o contém. Pochi
Você não precisa ignorar o quadro quando uma camada é transformada. Na verdade, o quadro vai representar apenas o menor retângulo que contém a camada transformada, o que é útil. Os limites permanecem inalterados, independentemente da transformação. Então são apenas duas representações diferentes do espaço de coordenadas, dependendo do que você está interessado. Shannon Potter
Sim eu entendo. Porque eu dimensiono 2x, então os limites também são exibidos 2x. por exemplo, tamanho (100,100) será exibido como tamanho (200,200) keywind

Perguntas relacionadas