¿Cómo corregir Alinear UILabel en la vista de tabla de celdas?

Yo para crear un proyecto que tiene una class tableview en uno mismo. Tengo 3 cosas en cualquier celda de tableview. (1 button (lado izquierdo) y 2 como image inferior)

introduzca la descripción de la imagen aquí

Quiero que la celda de título sea la alignment correcta, pero no pude hacerlo.

este es mi codigo donde esta mi error:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { _backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"copymove-cell-bg"]]; [_backgroundImageView setContentMode:UIViewContentModeTopRight]; [self setBackgroundView:_backgroundImageView]; [self setSelectionStyle:UITableViewCellSelectionStyleNone]; _iconButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_iconButton setFrame:CGRectMake(0, 10, 47, 50)]; [_iconButton setAdjustsImageWhenHighlighted:NO]; [_iconButton addTarget:self action:@selector(iconButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_iconButton setImage:[UIImage imageNamed:@"item-icon-folder"] forState:UIControlStateNormal]; [_iconButton setImage:[UIImage imageNamed:@"item-icon-folder-selected"] forState:UIControlStateSelected]; [_iconButton setImage:[UIImage imageNamed:@"item-icon-folder-selected"] forState:UIControlStateHighlighted]; [self.contentView addSubview:_iconButton]; _titleTextField = [[UILabel alloc] initWithFrame:CGRectMake(69, 29, _titleTextField.frame.size.width, _titleTextField.frame.size.height)]; [_titleTextField setFont:KOFONT_FILES_TITLE]; [_titleTextField setTextColor:KOCOLOR_FILES_TITLE]; [_titleTextField.layer setShadowColor:KOCOLOR_FILES_TITLE_SHADOW.CGColor]; [_titleTextField setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin]; [_titleTextField.layer setShadowOffset:CGSizeMake(0, 1)]; [_titleTextField.layer setShadowOpacity:1.0f]; [_titleTextField.layer setShadowRadius:0.0f]; [_titleTextField setTextAlignment:UITextAlignmentRight]; [_titleTextField setLineBreakMode:UILineBreakModeMiddleTruncation]; [self.contentView addSubview:_titleTextField]; [self.layer setMasksToBounds:YES]; _countLabel = [[UILabel alloc] initWithFrame:CGRectMake(273, 29, 47, 28)]; [_countLabel setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin]; [_countLabel setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"item-counter"]]]; [_countLabel setTextAlignment:UITextAlignmentCenter]; [_countLabel setLineBreakMode:UILineBreakModeMiddleTruncation]; [_countLabel setFont:KOFONT_FILES_COUNTER]; [_countLabel setTextColor:KOCOLOR_FILES_COUNTER]; [_countLabel setShadowColor:KOCOLOR_FILES_COUNTER_SHADOW]; [_countLabel setShadowOffset:CGSizeMake(0, 1)]; [self setAccessoryView:_countLabel]; [self.accessoryView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleBottomMargin]; } return self; } 

Si está utilizando iOS6,

use [_countLabel setTextAlignment:NSTextAlignmentCenter]; porque UITextAlignmentCenter está en desuso en iOS6.

Para alinearse a la derecha,

 [_countLabel setTextAlignment:NSTextAlignmentRight]; 

Espero que esto te ayude …

Tu código funciona bien en mi final. Compruebe el ancho y la altura que está pasando a las tags. Simplemente revise su código configurando los anchos y la altura de sus tags.

Espero que te ayude.

 _titleTextField.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight 

Si alinear el text dentro de la label es su problema, entonces las soluciones anteriores son buenas. Si configurar el marco es el problema entonces, sugiero que mantenga el código limpio algo como:

Tenga un Cell.xib diga el file Cell.xib y el correspondiente .m y .h digan el file Cell.m y Cell.h que es el propietario del file nib. La class Cell debe ser una subclass de UITableViewCell . Coloque el UILables/UIImageView/UIButton en el xib en las posiciones necesarias y xib un map con las properties correspondientes en la class Cell (también proporcione un Cell identifier en Cell.xib ).

En el método de datasource cellForRowatIndex , obtén las celdas de la semilla como,

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { Cell *cell = (Cell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];//same CellIdentifier as in the Cell.xib if(cell==nil){ cell = [[[NSBundle mainBundle] loadNibNamed:@"Cell" owner:self options:nil] lastObject]; } //Access and set the labels, imageViews here return cell; } 
 _titleTextField = [[UILabel alloc] initWithFrame:CGRectMake(69, 29, _titleTextField.frame.size.width, _titleTextField.frame.size.height)]; 

Esto es extraño. Está configurando el ancho y alto de la label de su propio ancho y alto. Esto lo establecerá en el ancho y la altura de la label anterior. No sé lo que hará la primera vez que encuentre este código.

Su text se alinea a la derecha dentro de los límites de la vista de label, pero los límites no terminan donde los quiere. Puede intentar configurar el color de background para que pueda ver dónde está el marco de su label.

 _titleTextField.backgroundColor = [UIColor yellowColor]; 

Debe configurarlo para que ocupe el espacio de la celda y deje que coloque el text dentro de ella. Hacer que el marco de una label sea demasiado grande no afectará el tamaño del text, aunque hacerlo demasiado pequeño puede depender de las opciones establecidas.

 _titleTextField = [[UILabel alloc] initWithFrame:CGRectMake(69, 29, 273 - 69, self.contentview.bounds.size.height)] 

Primero UITextAlignmentRight está in iOS6 deprecated in iOS6 , por lo que debe utilizar:

 _titleTextField.textAlignment = 2; 

Segundo, debe verificar su UILabel Frame . Busque CGFloat x, CGFloat y el width de su UILable .

textAlignment = 0 (LeftAlignment). textAlignment = 1 (CenterAlignment). textAlignment = 2 (alignment derecha).

Espero eso ayude.

Para iOS 10+ y Swift 3+

 titleTextField.textAlignment = .center lblTitle.textAlignment = .right