Eu estava em uma suposição (provavelmente falsa) de que ativar o indicador de margem certa no xib é equivalente a usar UIViewAutoresizingFlexibleLeftMargin
código interno e assim por diante.
Então, eu costumava pensar de acordo com este instantâneo:
Mais tarde, hoje, tive que fazer uma verificação cruzada e me deparei com esse tópico .
E também a documentação da apple, intitulada com a seção com o título - "Manipulando alterações de layout automaticamente usando regras de redimensionamento automático" neste link: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/ CreatingViews.html
Portanto, agora tenho em mente um conceito renovado sobre como definir máscaras de redimensionamento automático programaticamente seria equivalente às configurações do xib:
Cenário 1 : configuração apenas (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
é equivalente a:
No XIB?
Cenário 2 : a configuração (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)
no código é equivalente a:
No XIB?
Meus 2 cenários renovados estão corretos? Estou agora no meu entendimento?
fonte
Respostas:
Sim, o Interface Builder "inverteu" em um sentido (ou UIView, dependendo de como você o vê). Seus "cenários" citados estão corretos.
fonte
Sim, você citou as coisas corretamente. Além disso, concordo que parece um pouco atrasado, por isso, agradeço sua postagem.
Você pode gostar de usar uma macro de pré-processador
UIViewAutoresizingFlexibleMargins
ao tornar a margem de um UIView flexível em todas as direções. Coloquei isso no arquivo de cabeçalho pré-compilado para que seja incluído em todos os lugares.O uso
UIViewAutoresizingFlexibleMargins
fará com que um elemento da interface do usuário permaneça centralizado, pois NÃO estará abraçando nenhum dos lados. Para fazer o elemento aumentar / diminuir com o pai, defina oUIViewAutoresizingFlexibleWidth
eUIViewAutoresizingFlexibleHeight
respectivamente.Eu gosto de usar,
UIViewAutoresizingFlexibleMargins
porque depois eu posso fazer referência a ele comoao invés de
Com frequência, vejo essas margens OU juntas em uma linha, como no exemplo acima. Apenas difícil de ler.
fonte
A ativação da seta vertical / horizontal (chamada mola) dentro da caixa tornará a altura / largura flexível. Mas ativar uma linha externa (chamada suporte) tornará esse lado inflexível / não flexível.
Ativar a linha esquerda externa (suporte esquerdo) não é equivalente a ativar
UIViewAutoresizingFlexibleRightMargin
. Em vez disso,UIViewAutoresizingFlexibleRightMargin
= em caso de braço direito desativada, off se de braço direito habilitado.É bastante confuso no começo, mas se você observar de perto, há uma diferença nas molas e nos suportes. Não sei por que a Apple fez isso, mas para mim, houve alguns casos em que era mais fácil de usar. E usar propriedades opostas no código é ainda mais confuso.
fonte
Swift 4 usa isso
Objetivo-C
fonte