Pergunta

Eu tenho trabalhado para automaticamente uma UIView personalizada e a Apple tem muito pouco a dizer sobre isso. Além disso, com base no feedback SO, a documentação da Apple está realmente errada em algumas áreas. Finalmente, embora haja seis componentes de redimensionamento no Builder de Interface e seis para setAutoresizingMask: Eles não parecem se correlacionar. Por exemplo, definir a mola de largura em IB tem um efeito diferente de definir o autoresizingMask para UIViewAutoresizingFlexibleWidth Ao girar o dispositivo.

Existem bons recursos para aprender sobre como o redimensionamento funciona no iPhone?

Editar:

Entendo os conceitos básicos que a Apple usa, como o ContentMode, e li a documentação do UIView. Estou procurando algo que explique um pouco mais profundamente o que as configurações do IB fazem em termos do que está disponível no SDK programaticamente.

Foi útil?

Solução

definindo o autoresizingMask para UIViewAutoresizingFlexibleWidth, é equivalente a definir a mola de largura, além dos suportes esquerda e direita no construtor de interface (os struts significam que a borda está não flexível). Se você quisesse replicar o comportamento de definir apenas a mola de largura, mas não os suportes esquerdo e direito, você teria que definir autoresizingMask para UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin

Outras dicas

Da Apple:

... Especifique o valor dessa máscara combinando as constantes descritas em Uiviewautoresizando usando o C Bitwise ou Operator. A combinação dessas constantes permite especificar quais dimensões da visão devem crescer ou encolher em relação à supervisão. O valor padrão dessa propriedade é o UiviewautoresingNone, o que indica que a visualização não deve ser redimensionada.

... Por exemplo, suponha que essa propriedade inclua as constantes UiviewautoresingFlexibleWidth e UiviewautoresingingFlexiblerIrightmargin, mas não inclui a constante uiviewautoresingflexibleleftmargin, indicando assim que o Largura da margem esquerda da vista é fixa mas que a largura da visão e a margem direita podem mudar. Assim, a vista aparece ancorada ao lado esquerdo de sua supervisão, enquanto a largura da visualização e a lacuna à direita do aumento da vista.

Se os comportamentos automobilizadores não oferecerem o layout preciso necessário para suas visualizações, você poderá usar uma exibição de contêiner personalizada e substituir o método LayoutSubViews para posicionar suas subviews com mais precisão.

Portanto, se você deseja posicionar uma visualização ancorada no lado superior e direito de sua supervisão, pode aplicar uma máscara como:

[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];

supervisão tem parâmetros como ContentMode e AUTORESIZESSUBVIELS, que tudo com MASSA DE AUTORESIZING de suas subvisões fazem o comportamento de redimensionamento

Leia atentamente http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

Para o registro, eu arranhei minha cabeça por uma hora porque meu Uilabel de uma linha simplesmente não agredia o tamanho da fonte automaticamente para se encaixar na largura. Finalmente, isso fez o truque:

label.contentMode = UIViewContentModeScaleAspectFit;

Eu pesquisei no Google e ninguém parece esclarecer esse detalhe (todo mundo informa que a etiqueta deve ser 1 linha, o conjunto AjustsFontsizeTofitWidth/MinimumFontSize etc.). Talvez o valor padrão desta propriedade tenha alterado? Estou no iOS 4.3.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top