ios iphone uitableview ios7 separator

Mantenga el relleno UITableView en el encabezado pero no en el separador en IOS7



iphone separator (7)

con la transición en iOS7, el separador tiene un relleno de 15px a la izquierda. Sé que puedo eliminar este relleno con la función de inserción de separador en la configuración de UITableView en el archivo xib, pero necesito seguir encabezando el texto con el relleno. ¿Cómo hacerlo?

defecto:

con personalización en separador inserta a 0:

Necesito mantener los separadores como en la figura 2, pero el encabezado con "2013" como en la imagen 1.


Es posible que no desee crear una vista de encabezado personalizada siempre porque a veces es una exageración o necesitará algo de prueba y error para que sea exactamente igual al título de la sección predeterminada. En su lugar, hay un truco simple que no necesita devolver una vista de encabezado personalizada. Solo establece la sangría del separador en 0 y coloca un espacio inicial en la cadena del título.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return @" Your Title"; }


Puede establecer inserciones en la tabla (y encabezado / pie de página) y en la celda en sí:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { [tableView setSeparatorInset:UIEdgeInsetsMake(0, 10, 0, 0)]; } if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { [tableView setLayoutMargins:UIEdgeInsetsMake(0, 10, 0, 0)]; } if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } }


Si desea sangrar el texto de la Sección desde el margen izquierdo, aquí hay una forma simple en que lo hice. En la función, ver el espacio después de la primera comilla? Simplemente coloque todos los espacios que necesite antes del inicio del texto.

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let title: UILabel = UILabel() title.text = " /(sortedSections[section])" title.textAlignment = NSTextAlignment.Left return title }


en su método cellForRowAtIndeaPath agregue una vista a la celda como

UIView* view = [[UIView alloc] initWithFrame:CGrectmake(cell.frame.ori.x, cell.frame.ori.y, 20.0, cell.height)]; view.backgroundColor = desired color [cell.containView addSubView: view];

Añade esto a tu primer código de celda y listo.


para Seperator puedes configurarlo a través de Storyboard

y para el encabezado hacer un encabezado personalizado como este

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *viewHeader = [UIView.alloc initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 28)]; UILabel *lblTitle = [UILabel.alloc initWithFrame:CGRectMake(6, 3, 136, 21)]; [lblTitle setFont:[UIFont fontWithName:@"HelveticaNeue" size:13]]; [lblTitle setTextColor:[UIColor blackColor]]; [lblTitle setTextAlignment:NSTextAlignmentLeft]; [lblTitle setBackgroundColor:[UIColor clearColor]]; [viewHeader addSubview:lblTitle]; return viewHeader; }

Dale alguna altura particular. Y dale cualquier texto. Haz una matriz para los encabezados de sección que contendrán tus años.


UITableView tiene un método delegado llamado viewForHeaderInSection . Si elimina el relleno y luego en el método delegado, agregue un relleno y devuelva la vista del encabezado de la sección.

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(tableView.frame), 30)]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 5, 200, 25)]; // 15 pixel padding will come from CGRectMake(15, 5, 200, 25). label.text = @"2013"; [view addSubview: label]; return view; }

Puedes diseñar tu vista de cabecera como quieras. Para establecer la altura del encabezado de tableView use:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;

Espero que te ayude ...)


USO DE SWIFT Y STORYBOARD

En el guión gráfico puede establecer diferentes inserciones de separador para TableView (encabezado) y para Cells (separadores).

Establezca la inserción del separador para celda en 0, seleccionando la celda en el Guión gráfico y configurando lo siguiente:

Luego, establezca la inserción del separador para TableView (para el encabezado) en 15, seleccionando TableView en Storyboard y configurando lo siguiente:

OPCIONAL:

También es posible que deba establecer que los márgenes de las celdas sean cero programáticamente para garantizar que el separador se desplace completamente de izquierda a derecha. Use este código si es necesario en el archivo swift de su controlador de vista de tabla:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("YOURCELL", forIndexPath: indexPath) as! UITableViewCell // THIS IS THE IMPORTANT PART... cell.layoutMargins = UIEdgeInsetsZero cell.preservesSuperviewLayoutMargins = false return cell }