for compilador objective-c xcode ipad interface-builder

objective-c - compilador - xcode ios 12



Interface Builder sigue restableciendo el ancho de mi UITableViewCell personalizado (4)

Acabo de hacer una prueba y no tuve problemas para cambiar el tamaño de la celda. No hizo ninguna diferencia, si el Xib fue creado con la opción ''para iPhone'' o ''para iPad''. Por lo tanto, esto funciona como se esperaba.

El truco es, no arrastrar el tamaño, pero usar el Inspector para cambiar el ancho, esto deja a la celda en su tamaño de 1024.

Estoy usando Interface Builder para diseñar un UITableViewCell personalizado para una aplicación de iPad .

Tengo un archivo XIB dedicado que tiene una UITableViewCell como su vista raíz. Puedo cambiar el ancho del UITableViewCell a 1024 (en el inspector de tamaño en el panel de propiedades derecho de XCode) y esto SI cambia el tamaño de la celda en el lienzo temporalmente.

Sin embargo, si luego intento mover / cambiar el tamaño de ciertos elementos dentro de UITableViewCell o cerrar y volver a abrir XIB, XCode decide restablecer el ancho de UITableViewCell nuevamente a 320 (el ancho específico del iPhone).

La celda del lienzo oculta los elementos dentro de la celda y hace que el diseño de la celda sea imposible a menos que cambie el tamaño de la celda nuevamente. Una vez que has dado la vuelta a este bucle unas cuantas veces, se vuelve bastante molesto.

¿Alguien sabe cómo puedo configurar el ancho para que sea permanente o algo así como especificar que el UITableViewCell es específico para iPad?

Para recrear ...

  • Archivo> Nuevo> Archivo ...
  • Interfaz de usuario> Vacío
  • Familia de dispositivos == iPad

  • Arrastre un nuevo UITableViewCell al lienzo (se creó con un ancho de 320 a pesar de haber seleccionado el iPad anteriormente)

  • Redimensionar el ancho del UITableViewCell a 1024 (todo bien hasta ahora)
  • Arrastre y suelte una etiqueta UIL en el lado izquierdo de UITableViewCell (aún en buen estado)
  • Cambie el tamaño de la UILabel de cualquier manera arrastrando una esquina (NO USE EL INSPECTOR DE ATRIBUTOS) - Y ... El tamaño de la UITableViewCell se restablece a 320

EDITAR:

Acabo de recibir la siguiente respuesta de Apple al ticket de radar que creé hace años ...

Hola Oliver

Este es un seguimiento con respecto a la ID de error # 13222753.

Ingeniería ha solicitado la siguiente información para investigar más a fondo este problema:

Creemos que este problema se ha abordado en la última semilla de Xcode 5.1.

Esta es una versión preliminar del conjunto de herramientas para desarrolladores Xcode para Mac, iPhone y iPad. Incluye el IDE de Xcode, el simulador de iOS y todas las herramientas y marcos necesarios para crear aplicaciones de OS X e iOS. Pruebe con esta versión y actualice su informe de errores con los resultados.

Xcode 5.1 Seed - Build 5B71f Fecha de publicación: 13 de diciembre de 2013

También he intentado recrear el problema en Xcode 5.0.2 y parece que se solucionó con esa compilación también.


Confirmo que la respuesta de Edward Huynh es correcta. Al mismo tiempo, no podría haberme dado el lujo de desactivar la reproducción automática, cambiar la altura, volver a activar las salidas automáticas. Esto me obligaría a rehacer todas las configuraciones de reproducción automática para cada subvista de la vista de contenido.

Estaba experimentando y descubrí que abrir el archivo xib en TextEdit y cambiar el ancho y alto de tableViewCell y tableViewCellContentView conservará todas las salidas automáticas y se actualizará el tamaño de la celda. Pocos de los valores constantes de las restricciones ahora estarán obsoletos, que pueden solucionarse fácilmente mediante el uso de "restricciones de actualización" en dichas restricciones.


La solución es no agregar una celda de vista de tabla a su plumilla. En su lugar, use una Vista regular para contener sus subvistas.

Cree una clase UITableViewCell personalizada que cargue la punta y establezca la vista de la punta de nivel superior como la subvista de la vista de contenido de la celda:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { UINib *nib = [UINib nibWithNibName:@"YourNibName" bundle:nil]; UIView* containerView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]; containerView.translatesAutoresizingMaskIntoConstraints = NO [self.contentView addSubview:containerView]; NSDictionary *views = NSDictionaryOfVariableBindings(containerView); [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[containerView]|" options:0 metrics:nil views:views]]; [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|" options:0 metrics:nil views:views]]; } return self; }

Registre su clase con la vista de tabla:

[tableView registerClass:YourCellClass forCellReuseIdentifier:@"YourCellID"]`


No sé si consideras que esta es una respuesta válida, pero el problema solo me pareció que ocurría cuando estaba usando la asignación automática en IB. Si lo desactivo, el problema de cambiar el tamaño de Xcode al UITableViewCell desaparecerá.

Para desactivar la reproducción automática , simplemente seleccione el UITableViewCell y luego a la derecha en el ''Inspector de archivos'', hay una casilla de verificación para la reproducción automática para desactivarlo.