在UITableViewCell中以编程方式将TextView对齐到右侧

时间:2015-03-30 20:34:07

标签: ios objective-c xcode tableviewcell

我无法在自定义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;

1 个答案:

答案 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);