如何解决变化的约束和动态的UITableviewCell高度?

时间:2019-01-04 16:21:36

标签: ios objective-c uitableview uiimageview uitextview

我正在尝试创建一个UITableViewCell,该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 :(得分:0)

原来,我的图像视图和UITableViewCell图像视图的名称存在冲突。所以我将self.imageView替换为self.pictureView,现在一切正常。 希望有一天能对某人有所帮助^^