Пользовательский UITableViewCell с изображением и меткой

У меня есть некоторыеTableView, используя basic или субтитры UITableViewCellи отображение изображения/иконки. Разделительная линия автоматически отступает и начинается с того места, где отображаются метки. Пока все хорошо. (см. раздел правильное поведение)

Теперь мне нужна еще пара этикеток и изображение. Поэтому я создал пользователь TableViewCellс 4 метками. Без образа они работают как положено. Но когда я добавляю изображение к существующему стандартуImageView, изображение отображается, разделительная линия отступается, а пользовательские метки нет. Они накладываются на изображение. (см неправильное поведение)

Должен ли я также создать обычайImageView, чтобы он работал правильно, и как разделительная линия отступает на этом пути, или есть другая возможность / состояние искусства, чтобы сделать что-то подобное?

2 ответа

  1. 1. Сначала создайте выход всех четырех пользовательских элементов, таких как label и image view как :- lblOne, lblTwo, lblThree, imageView, соответственно.

    2. Затем перейдите к просмотру Viewdidload и создайте словарь :-

    NSDictionary *viewsDictionary = @{@" @"superview":self.view,
                                          @"lblOne":self.lblOne,
                                          @"lblTwo":self.lblTwo,
                                          @"lblThree":self.lblThree,
                                          @"imageView":self.imageView
                                          };
    

    3. Теперь добавьте ограничение Autolayout программно :-

     NSArray *lblOutletCenterConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[superView]-(<=1)-[lblOne]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:viewsDictionary];
    
        [self.view addConstraints:lblOutletCenterConstraint];
    
    NSArray *lblOutletCenterConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[superView]-(<=1)-[lblTwo]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:viewsDictionary];
    
        [self.view addConstraints:lblOutletCenterConstraint];
    
    NSArray *captionTopConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[lblOne]-25-[imageView]" options:0 metrics:nil views:viewsDictionary];
    
        [self.view addConstraints:captionTopConstraint];
    
    NSArray *captionTopConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[lblTwo]-25-[lblThree]" options:0 metrics:nil views:viewsDictionary];
    
        [self.view addConstraints:captionTopConstraint];
    

    4. Или вы можете сделать это с помощью раскадровки.

  2. Я, наконец, закончил с решением, которое я создал пустой документ построителя интерфейса , добавилTableViewCell, поставил Labelи ImageViewна нем, установил ограничения, подключил все к соответствующему *.swift. Заканчивать. Я надеялся повторно ImageViewиспользовать из по умолчаниюTableViewCell, но, очевидно, что не работал правильно (или я был слишком глуп).