Não é possível redimensionar UIView em IB


87

Provavelmente algo simples, mas não consigo entender por que não consigo redimensionar um UIView em um xib no Interface Builder.

Eu criei uma nova visualização XIB no xcode e no inspetor de tamanho, a largura e a altura estão desabilitadas e esmaecidas para 320 por 460. Isso é estranho, pois posso alterar o tamanho das outras duas visualizações (associadas às outras duas barras de guias Itens).

Não tenho certeza se isso tem alguma coisa a ver com, mas recentemente atualizei o SDK para 3.

Obrigado!

Respostas:


81

Acho que você não pode editar o tamanho enquanto simula quaisquer elementos da interface do usuário, como a barra de status no Interface Builder. Você pode tentar desligar os elementos simulados se algum estiver habilitado. Não tenho certeza do porquê, então gostaria de receber um feedback de qualquer pessoa que saiba exatamente o porquê - deve haver um bom motivo.


1
Obrigado isso mesmo. Depois que atualizei o xcode e o IB, a barra de status estava ativada por padrão. Os outros estão desligados.

1
Como no Xcode 4.2, iOS 5.0.1, isso mudou. Minha resposta abaixo explica como isso pode ser alcançado.
lol

1
Muito útil. Basta desligar a barra de status, ajustar o tamanho e ligar a barra de status novamente.
Wollan

9
Essa configuração funcionou para um ViewController.xib no Xcode 4.3.3: "Métricas simuladas - Tamanho: forma livre". Depois disso, a configuração do tamanho da visualização é habilitada. Remova também a opção de escala para preencher "Modo de visualização" (logo abaixo das métricas simuladas).
defvol

uuuugh Eu realmente não gosto deste IDE
Saik Caskey

78

Para conseguir isso no XCode 4.6.3 / 5.0.2, você precisa seguir a imagem abaixo:

  1. Em 'Inspetor de arquivo' -> desmarque Use Auto Layout
  2. Clique em Attributes Selector & Choose Freeformfor Size

Isso é necessário ao criar um headerView para um tableView

insira a descrição da imagem aqui


40

A parte que você está procurando está no primeiro painel Inspetor (Command-1). Bem no topo, há uma seção chamada Elementos de interface do usuário simulados. Por padrão, a Barra de status está ativada. Você precisa ter certeza de que todos os três estão definidos como Nenhum.


2
Obrigado, essas respostas me pouparam muito tempo! Alguém sabe por que o IB faz isso?
Gregor

Obrigado cara. Eu estive procurando por aquele.
natanavra

Observação para todos, agora é: "Não especificado" em vez de nenhum. (Eu tenho a versão 3.2.3)
IcyBlueRose

Confirmo que para iPad é "Não especificado", obrigado Thomas Mon, você me economizou algumas horas: D
Qlimax

Só vejo isso para controladores de visualização, não visualizações
BigBoy1337

26

Como no Xcode 4.2, iOS 5.0.1, as métricas simuladas padrão incluem simular o atributo 'tamanho' de UIViewControllers para 'Inferido'

Se você alterar este atributo para 'Forma livre', então você será capaz de redimensionar o UIView contido no UIViewController enquanto simula a barra de status (ou qualquer outra das simulações para esse assunto)


1
O atributo de tamanho agora é padronizado como "Tela inteira Retina 4", mas alterá-lo para "Forma livre" ainda funciona.
Pier-Luc Gendreau

4

Basta ir ao inspetor, ir para o primeiro painel (ou pressione command-1) e, em seguida, altere os campos marcados Barra de status, Barra superior e Barra inferior para Nenhum na seção chamada "Elementos de interface do usuário simulados". Pode ser necessário clicar no pequeno triângulo para torná-los visíveis.


1

Engraçado, eu tenho um problema semelhante. Removai todas as visualizações do arquivo xib e adicionei novamente uma visualização. Defina a barra de status como "não especificada" para que a barra de status não seja acomodada. A visualização, quando adicionada, é criada com x = 0, y = 0, w = 320 h = 460 em vez de (0,0,320,480) como eu esperava. Após alterar a altura para 480 e conectar ao dono do arquivo e alterar a cor para torná-lo distinto em relação ao fundo. Descobri que havia uma faixa branca entre o topo da tela e a visualização. Aumentei meu código com:

#define RECTLOG (rect) (NSLog (@ "" #rect @ "x:% fy:% fw:% fh:% f", rect.origin.x, rect.origin.y, rect.size.width, rect .size.height));

em viewDidLoad

- (vazio) viewDidLoad {
    [super viewDidLoad];
    RECTLOG (self.view.frame);
}

Acontece que a visualização está como é carregada do IB na verdade (0, 20, 320, 480) Como uma solução alternativa, eu redefino o quadro da visualização com self.view.frame = CGRectMake (0, 0, 320, 480);

Estou usando o IB 3.2.5

Adoraria saber uma pequena correção para este.


3
FYI, você pode usar NSStringFromCGRect (rect) para obter uma string imprimível que representa um CGRect.
Berry

Esse foi um ótimo FYI, eu verifiquei, e você pode realmente obter um valor de string de um CGPoint e CGSize também! muito cozinheiro, obrigado.
FierceMonkey de

1

Percebi que o UIView criado automaticamente ao criar o arquivo xib não pode ser redimensionado a partir do painel de dimensionamento ou das alças de borda.

Tudo o que fiz foi adicionar outro UIView e arrastar tudo do meu UIView antigo para o novo e, em seguida, excluir o antigo.

Isso resolveu o problema para mim, mas sim, acho que há um problema subjacente com o construtor de interface para a Apple resolver (alguém me corrija se eu estiver errado).

Estou usando o construtor de interface integrado XCode 4.


0

Eu resolvi isso de uma maneira diferente ...

abra seu xib com seu editor de texto favorito e edite esta linha

        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CompassViewController">

CompassViewController é o nome da classe com o qual você está tentando vincular seu nib / xib.

Basta editar o nome da sua turma com o nome da turma correto e pronto;)


0

insira a descrição da imagem aquiNo storyboard, selecione UIVIew e vá para o inspetor de atributos, altere o tamanho UIVIew para "FreeForm" em vez de "Inferido"

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.