1

我有 UITableviewcell,我想通过点击它来使它变大。如果我点击它并再次点击它时恢复到正常高度,我可以让它变大,但过渡并不好。有没有办法当我点击单元格时过渡平滑并且单元格高度变大。

-(void) zoomInProperties
{
        remedyTextLabel.lineBreakMode=UILineBreakModeWordWrap;
        CGSize maximumLabelSize=CGSizeMake(270.0,100.0);
        CGSize expectedLabelSize=[remedyTextLabel.text sizeWithFont:remedyTextLabel.font constrainedToSize:maximumLabelSize
                                                      lineBreakMode:UILineBreakModeWordWrap];
        NSLog(@"Height=%f",expectedLabelSize.height);
        NSLog(@"Width=%f",expectedLabelSize.width);

        if (expectedLabelSize.height>17 || expectedLabelSize.width > 260.0)
        {
            CGRect newFrame= remedyTextLabel.frame;
            newFrame.size.height = expectedLabelSize.height;
            newFrame.origin=CGPointMake(43.0,24.0);
            remedyTextLabel.numberOfLines=(expectedLabelSize.height/17);
            remedyTextLabel.frame= CGRectMake(43.0, 24.0, 270.0, expectedLabelSize.height);
            blackRemedyTxtImageView.frame=CGRectMake(0.0, 13.0, 320.0,expectedLabelSize.height+13.0);
            remedyImage.frame=CGRectMake(0.0, 75.0, 320.0,83.5);
            remedyLabel.frame=CGRectMake(27.0, 85.0,183.0,58.0);

            notifyMe.frame = CGRectMake(350.0, 69.0, 66.0, 33.0);

            backgroundCellImage.frame=CGRectMake(0.0, 0.0, 320.0,130.5);
            RemedyCustomCellView.frame=CGRectMake(0.0,0.0, 320.0, 136.5);
        }

    }


}

//  ZoomOutProperties  Method
-(void) zoomOutProperties
{
        NSLog(@"zoom out");

        remedyTextLabel.numberOfLines=1;
        remedyTextLabel.frame=CGRectMake(43.0,22.0 ,270.0,17.0);
        remedyTextLabel.backgroundColor=[UIColor clearColor];
        remedyTextLabel.lineBreakMode=UILineBreakModeTailTruncation;
        remedyImage.frame=CGRectMake(0.0, 46.0, 320.0, 83.5);
        remedyLabel.frame=CGRectMake(27.0,55.0 ,183.0,58.0);
        blackRemedyTxtImageView.frame=CGRectMake(0.0, 13.0, 320.0,30.5);
        backgroundCellImage.frame=CGRectMake(0.0, 0.0, 320.0,129.5);
        RemedyCustomCellView.frame=CGRectMake(0.0,0.0, 320.0, 129.5);
        notifyMe.frame = CGRectMake(350.0, 69.0, 66.0, 33.0);

}
4

1 回答 1

1

如果您调用beginUpdatesendUpdates背靠背,表格视图将重新计算所有单元格高度并为任何大小更改设置动画:

[self.tableView beginUpdates];
[self.tableView endUpdates];

请记住,在调整大小动画完成之前对 、 、 等的任何调用都可能与正在进行的动画发生reloadData冲突insertSections:withRowAnimation:insertRowsAtIndexPaths:withRowAnimation:

于 2013-05-07T17:18:51.480 回答