我无法在自定义TableViewCell中右侧对齐texview。 我试过NSTextAlignmentRight,但根本没有用。 我以编程方式调整所有布局,也许我忘记了一些复选框以取消选中我的故事板。 对不起我的英文,希望你明白!
这是我在cellForRowAtIndexPath中的代码:
cell = [self.tablaChat dequeueReusableCellWithIdentifier:simpleTableIdentifierUser];
if (cell == nil) {
cell = [[ChatTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifierUser];
}
cell.mensajeUsuario2.text = [NSString stringWithFormat:@"%@", [[self.dict_mensajes valueForKey:@"mensaje"] objectAtIndex:indexPath.row]];
NSString *dateAsString = [[self.dict_mensajes valueForKey:@"timestamp"] objectAtIndex:indexPath.row];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:dateAsString];
//[self convertirFecha:date];
cell.labelUsuario2.text = [NSString stringWithFormat:@"%@ el %@", [[self.dict_mensajes valueForKey:@"nombre"] objectAtIndex:indexPath.row], [self convertirFecha:date]];
cell.mensajeUsuario2.frame = CGRectMake(cell.mensajeUsuario2.frame.origin.x,
cell.mensajeUsuario2.frame.origin.y,
self.view.frame.size.width - cell.imagenUsuario2.frame.size.width - 25,
cell.mensajeUsuario2.frame.size.height);
cell.imagenUsuario2.frame = CGRectMake(self.view.frame.size.width - cell.imagenUsuario2.frame.size.width - 10,
cell.imagenUsuario2.frame.origin.y,
cell.imagenUsuario2.frame.size.width,
cell.imagenUsuario2.frame.size.height);
CGFloat fixedWidth = cell.mensajeUsuario2.frame.size.width;
CGSize newSize = [cell.mensajeUsuario2 sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
CGRect newFrame = cell.mensajeUsuario2.frame;
newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
cell.mensajeUsuario2.frame = newFrame;
cell.mensajeUsuario2.scrollEnabled = NO;
[cell.mensajeUsuario2.layer setBorderWidth: 1.0];
[cell.mensajeUsuario2.layer setCornerRadius:8.0f];
[cell.mensajeUsuario2.layer setMasksToBounds:YES];
alturaCelda = cell.mensajeUsuario2.frame.size.height + cell.labelUsuario2.frame.size.height;
cell.mensajeUsuario2.backgroundColor = Rgb2UIColorMediumLight(0, 0, 0);
cell.mensajeUsuario2.textColor = Rgb2UIColorMask(255, 255, 255);
cell.labelUsuario2.frame = CGRectMake(cell.labelUsuario2.frame.origin.x,
alturaCelda - 10,
self.view.frame.size.width - cell.imagenUsuario2.frame.size.width - 30,
cell.labelUsuario2.frame.size.height);
NSString *urlImagen = [NSString stringWithFormat:@"%@", [[self.dict_mensajes valueForKey:@"foto"] objectAtIndex:indexPath.row]];
NSURL *imageURL = [NSURL URLWithString:urlImagen];
UIImage *image;
// 1. Check the image cache to see if the image already exists. If so, then use it. If not, then download it.
if ([[ImageCache sharedImageCache] DoesExist:urlImagen] == true)
{
image = [[ImageCache sharedImageCache] GetImage:urlImagen];
cell.imagenUsuario2.image = image;
}
else
{
dispatch_async(kBgQueue, ^{
NSData *imgData = [NSData dataWithContentsOfURL: imageURL];
if (imgData) {
UIImage *image2 = [UIImage imageWithData:imgData];
if (image2) {
dispatch_async(dispatch_get_main_queue(), ^{
ChatTableViewCell *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath];
if (updateCell)
updateCell.imagenUsuario2.image = image2;
// Add the image to the cache
[[ImageCache sharedImageCache] AddImage:urlImagen :image2];
});
}
}
});
}
[cell.mensajeUsuario2 sizeToFit];
[cell.mensajeUsuario2 layoutIfNeeded];
cell.mensajeUsuario2.textAlignment = NSTextAlignmentRight;
答案 0 :(得分:0)
我这样解决了: 我将“cell.mensajeUsuario2.frame”声明移到了底部,然后将其更改为此。
cell.mensajeUsuario2.frame = CGRectMake(cell.imagenUsuario2.frame.origin.x - 10 - cell.mensajeUsuario2.frame.size.width,
cell.mensajeUsuario2.frame.origin.y,
cell.mensajeUsuario2.frame.size.width,
cell.mensajeUsuario2.frame.size.height);