Как исправить изменяющиеся ограничения и динамическую высоту UITableviewCell? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь создать UITableViewCell, который может отображать или не отображать UIImageView вместе с UITextView. Если у меня есть только текстовое представление, нет проблем, ячейка соответственно изменит высоту. Но когда я пытаюсь обновить высоту, когда изображение меняет размер (я скрываю его, устанавливая его в значение hidden = YES и обновляя ограничение высоты на небольшое значение), текст должен быть обновлен, чтобы иметь корректный эффект.

Возможно, я не совсем уверен, поэтому вот проблема в действии: image size issue

и код:

 -(void)textViewDidChange:(UITextView *)textView{

    CGFloat startHeight = self.textView.frame.size.height;
    CGFloat calcHeight = [self.textView sizeThatFits:self.textView.frame.size].height;

    if (startHeight != calcHeight) {
        [UIView setAnimationsEnabled:NO];
        [self.tableView beginUpdates];
        [self.tableView endUpdates];
        [UIView setAnimationsEnabled:YES];
    }


}


    -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

            if([text isEqualToString:@"\n"])
                [textView resignFirstResponder];

            return YES;
            }


        - (IBAction)imgButtonPushed:(id)sender {

            //self.imageView.hidden = !self.imageView.hidden;
            dispatch_async(dispatch_get_main_queue(), ^(void){
                [self.tableView beginUpdates];
                if(self.imageView.hidden){
                    self.imageConstraintHeight.constant = 200;
                    self.imageView.hidden = NO;
                }else{
                    self.imageView.hidden = YES;
                    self.imageConstraintHeight.constant = 4;
                }

                [self.contentView setNeedsLayout];
                [self.contentView layoutIfNeeded];

                [self.tableView endUpdates];

            });

        }

Кто-нибудь знает, как я мог бы получить плавный и рабочий эффект? Спасибо!

1 Ответ

0 голосов
/ 09 января 2019

Оказалось, что произошел конфликт с именем моего представления изображения и представления изображения UITableViewCell. поэтому я заменяю self.imageView на self.pictureView и все работает сейчас. Я надеюсь, что это поможет кому-нибудь когда-нибудь ^^

...