Estoy trabajando en una aplicación donde se requiere que la sección Encabezado de la sección esté a la derecha en lugar de la izquierda predeterminada.UITableView encabezado de sección a la derecha en lugar de predeterminado a la izquierda
Busqué y muchos geeks propuestas para aplicar:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
static UIView *headerView;
if (headerView != nil)
return headerView;
NSString *headerText = NSLocalizedString(@"البحث الأخيرة", nil);
// set the container width to a known value so that we can center a label in it
// it will get resized by the tableview since we set autoresizeflags
float headerWidth = 150.0f;
float padding = 10.0f; // an arbitrary amount to center the label in the container
headerView = [[UIView alloc] initWithFrame:CGRectMake(300, 0.0f, headerWidth, 44.0f)];
headerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
// create the label centered in the container, then set the appropriate autoresize mask
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(padding, 0, headerWidth - 2.0f * padding, 44.0f)];
headerLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
headerLabel.textAlignment = UITextAlignmentRight;
headerLabel.text = headerText;
[headerView addSubview:headerLabel];
return headerView;
}
Sin embargo, cuando intento de aumentar la coordenada x del punto de vista del marco de cabecera, que no afecta a la posición de la vista. Y siempre está en el centro de la vista de tabla.
Necesito que el encabezado esté a la derecha.
En vez de ir con un flexibleWidth, no se puede lo fuerza a ser ancho? Entonces la vista consumirá todo el ancho y justificará el texto a la derecha. – bryanmac
Ya seleccionó una respuesta que es en su mayoría correcta, pero agregar espacios para obtener un margen es un truco real. La forma correcta de resolver su problema es crear una vista vacía (o una con un color de fondo) y usarla como headerView. Luego agrega un UILabel a esa vista de contenedor y lo compensa un poco desde el lado derecho. Este concepto - usar una vista vacía como contenedor para colocar otras vistas es una herramienta común y útil. –
@DavidH tienes razón. La idea de agregar espacios no es buena. Aunque funcionó para mí por el momento.Como mencioné en mi pregunta, la vista siempre estaba en el centro, donde lo necesitaba a la derecha. Establecer el marco no funcionaba. También la etiqueta estaba alineada a la derecha. Entiendo que usar una UIView es mucho mejor tener más opciones de personalización. ¡Gracias por el comentario! –