No se puede cambiar el tamaño de UIView en IB

88

Probablemente algo simple, pero no puedo entender por qué no puedo cambiar el tamaño de una UIView en un xib en Interface Builder.

Creé una nueva vista XIB en xcode y en el inspector de tamaño, el ancho y la altura están deshabilitados y atenuados a 320 por 460. Esto es extraño ya que puedo cambiar el tamaño de las otras dos vistas (asociadas con las otras dos barras de pestañas artículos).

No estoy seguro de si esto tiene algo que ver, pero recientemente actualicé el SDK a 3.

¡Gracias!


fuente

Respuestas:

81

Creo que no se puede editar el tamaño mientras se simulan elementos de la interfaz de usuario, como la barra de estado en Interface Builder. Puede intentar apagar los elementos simulados si alguno está habilitado. No estoy seguro de por qué es así, por lo que agradecería los comentarios de cualquiera que sepa exactamente por qué es así; debe haber una buena razón.

teabot
fuente
1
Gracias, eso es correcto. Después de actualizar xcode e IB, la barra de estado estaba activada de forma predeterminada. Los demás lo tienen en off.
1
Como en Xcode 4.2, iOS 5.0.1 esto ha cambiado. Mi respuesta a continuación explica cómo se puede lograr esto.
lol
1
Muy útil. Simplemente apague la barra de estado, ajuste el tamaño y luego vuelva a encender la barra de estado.
Wollan
9
Esta configuración funcionó para un ViewController.xib en Xcode 4.3.3: "Métricas simuladas - Tamaño: forma libre". Después de eso, se habilita la configuración del tamaño de la vista. También elimine la opción de escala para llenar "Modo de visualización" (justo debajo de las métricas simuladas).
defvol
uuuugh Realmente no me gusta este IDE
Saik Caskey
80

Para lograr eso en XCode 4.6.3 / 5.0.2, debe seguir la captura de pantalla a continuación:

  1. En 'Inspector de archivos' -> desmarque Use Auto Layout
  2. Haga clic en el selector de atributos y elija el Freeformtamaño

Esto es necesario al crear un headerView para un tableView

ingrese la descripción de la imagen aquí

Houman
fuente
40

La parte que está buscando está en el primer panel Inspector (Comando-1). Justo en la parte superior hay una sección denominada Elementos de interfaz de usuario simulados. De forma predeterminada, la barra de estado está activada. Debe asegurarse de que los tres estén configurados en Ninguno.

Thomas Mon
fuente
2
Gracias, estas respuestas me ahorraron mucho tiempo. ¿Alguien sabe por qué IB hace esto?
Gregor
Gracias amigo. He estado buscando ese.
Natanavra
Nota para todos, esto es ahora: "Sin especificar" en lugar de ninguno. (Tengo la versión 3.2.3)
IcyBlueRose
Confirmo que para iPad es "Sin especificar", gracias Thomas Mon, me ahorraste algunas horas: D
Qlimax
Solo veo esto para los controladores de vista, no para las vistas
BigBoy1337
26

Como en Xcode 4.2, iOS 5.0.1, las métricas simuladas predeterminadas incluyen la simulación del atributo 'tamaño' de UIViewControllers a 'Inferido'

Si cambia este atributo a 'Freeform', entonces puede cambiar el tamaño de la UIView contenida en UIViewController mientras también simula la barra de estado (o cualquier otra de las simulaciones para el caso)

jajaja
fuente
1
El atributo de tamaño ahora está predeterminado en "Retina 4 Pantalla completa", pero cambiarlo a "Forma libre" todavía funciona.
Pier-Luc Gendreau
4

Simplemente vaya al inspector, vaya al primer panel (o presione el comando-1) y luego cambie los campos marcados Barra de estado, Barra superior y Barra inferior a Ninguno en la sección llamada "Elementos de interfaz de usuario simulados". Es posible que deba hacer clic en el pequeño triángulo para que sean visibles.


fuente
1

Es curioso que tenga un problema similar. Eliminé todas las vistas del archivo xib y volví a agregar una vista. Establezca la barra de estado como "sin especificar" para que no se adapte a la barra de estado. La vista, cuando se agrega, se crea con x = 0, y = 0, w = 320 h = 460 en lugar de (0,0,320,480) como hubiera esperado. Después de cambiar la altura a 480 y conectarlo al propietario del archivo y cambiar el color para que sea distintivo en relación con el fondo. Descubrí que había una banda blanca entre la parte superior de la pantalla y la vista. Aumenté mi código con:

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

dentro de viewDidLoad

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

Resulta que la vista es como se cargó desde IB en realidad (0, 20, 320, 480). Como solución, restablecí el marco de la vista con self.view.frame = CGRectMake (0, 0, 320, 480);

Estoy usando IB 3.2.5

Me encantaría saber de una pequeña solución para este.

tonto
fuente
3
Para su información, puede usar NSStringFromCGRect (rect) para obtener una cadena imprimible que represente un CGRect.
Berry
Eso fue un gran FYI, lo comprobé, ¡y de hecho puedes obtener un valor de cadena de un CGPoint y CGSize también! muy cocinero, gracias.
FierceMonkey
1

Me di cuenta de que el UIView creado automáticamente al crear el archivo xib no se puede cambiar de tamaño desde el panel de tamaño o los controladores de borde.

Todo lo que hice fue agregar otro UIView y arrastré todo desde mi antiguo UIView al nuevo y luego eliminé el anterior.

Me resolvió el problema, pero sí, creo que hay un problema subyacente con el constructor de interfaces que Apple debe resolver (alguien me corrija si me equivoco).

Estoy usando el constructor de interfaces integrado XCode 4.

PowerAktar
fuente
0

Lo resolví de una manera diferente ...

abre tu xib con tu editor de texto favorito y edita esta línea

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

CompassViewController es su nombre de clase con el que está tratando de vincular su plumilla / xib.

Simplemente edite el nombre de su clase con el nombre de clase correcto y listo;)

jeet.chanchawat
fuente
0

ingrese la descripción de la imagen aquíEn el guión gráfico, seleccione el UIVIew y vaya al inspector de atributos, cambie el tamaño del UIVIew a "FreeForm" en lugar de "Inferido"

Jane.Abraham
fuente