estão entrando em pagamentos automáticos recentemente e estou preso ao que parece ser um exemplo de problema realmente trivial. Tenho uma visão de que quero sentar na parte superior da tela e ocupar metade da altura da tela. Simples antes da execução automática - basta colocá-lo no lugar e pedir para expandir verticalmente quando a superview é redimensionada.
Agora, eu não posso pela minha vida ver como fazê-lo. Aqui está o que recebo quando tento configurar isso:
A restrição de espaço inferior é definida como "igual a 284", o que é absoluto e absolutamente inútil para mim quando mudo para o layout do iPhone4, pois mantém um espaço de 284 pontos na parte inferior da tela e reduz a exibição para não ser mais metade da tamanho da tela. E não há como definir essa restrição para igualar uma fração da altura de qualquer outra visualização.
Depois de lutar um pouco, a única maneira de pensar em fazer isso seria introduzir outra visão abaixo dessa visão, fixar suas alturas igualmente, fazer com que elas se sentassem acima e abaixo uma da outra e depois definir a segunda visão (inferior) para ficar invisível .. o que parece um pouco feio!
Estou perdendo algo óbvio?
fonte
Respostas:
Isso agora é possível no IB a partir de [pelo menos] Xcode 5.1.1. Embora demorei algum tempo para descobrir, na verdade é super simples:
Primeiro, crie uma restrição básica de alinhamento superior (você também precisará configurar as restrições inferior, esquerda e direita, como o normal). Em seguida, selecione a restrição e navegue até o inspetor de Atributos :
Então você pode ajustar o multiplicador. Se você quiser, 50% da super visão deixa em
1
, uma vez que está alinhada pelo centro da super. Essa também é uma ótima maneira de criar visualizações com outras porcentagens (como 25% da super visualização)fonte
First Item
é . Caso contrário, sim, apenas o centralizará. Você também precisará garantir que outras restrições estejam definidas corretamente para lidar com as outras arestas da vista.View.Top
View.Center Y
Solução de storyboard, na qual você pode definir a proporção exata entre todas as visualizações:
Agora:
LUCRO!!!
PS Observe também que esse método funciona com visualizações em diferentes níveis de aninhamento e (obviamente) aplicáveis à largura
Às vezes, o PPS pode ser útil "reverter o primeiro e o segundo item" da restrição ou definir o multiplicador reverso (por exemplo, 2 em vez de 0,5) (mas esses métodos não são úteis se você não entender como as visualizações se relacionam).
fonte
Depois de um pouco mais de tempo, eu vim com o seguinte.
Estou anotando isso como resposta, mas não é muito satisfatório, pois assume que você não pode fazer isso no Interface Builder, mas a restrição correta pode ser adicionada no código posteriormente como:
Basicamente, define um multiplicador de 0,5 contra a altura do self.view, atuando no upperview. Eu tive que definir a prioridade da restrição de espaço vertical inferior no IB para menor que 1000 para evitar várias mensagens de tempo de execução sobre a quebra de restrições também.
Portanto, se alguém puder mostrar como fazer isso no Interface Builder, seria melhor responder à minha pergunta, caso contrário, acho que isso é o melhor possível (por enquanto) ???
fonte
Um pouco mais fácil e mais direto do que o método do que a resposta de Fyodor Volchyok. -Segure o botão de controle e clique na subview. -Ainda mantendo pressionado o botão de comando, arraste o cursor para a superview e clique na superview. -Selecione "Proporção".
-Em seguida, clique no Inspetor de tamanhos. -Em seguida, clique duas vezes na restrição.
-Verifique se "altura" está selecionada para os dois itens.
-Em seguida, altere o "Multiplicador" para 0,5 por metade da tela ou qualquer fração da superview que você deseja.
fonte
Também há outra possibilidade no código, caso você tenha duas visualizações que devem ter a mesma altura: basta definir a altura da view2 para a altura da view1 (o truque aqui não é definir a altura da view1 explicitamente).
fonte
Versão rápida da resposta de Mete:
fonte