框架在cellForRowAtIndexPath中没有变化

时间:2014-12-26 05:21:53

标签: ios objective-c uitableview

我希望在某些条件下更改view中单元格内cellForRowAtIndexPath的x位置框架。我使用了以下代码。但它不会改变视图的x position帧。

- (void)viewDidLoad {
    [super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@"GoalDetailsCustomCardCell" bundle:nil];

        [goalDetailsTableView registerNib:nib forCellReuseIdentifier:@"CardCell"];
}
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {

        GoalDetailsTableViewCell *cell = [goalDetailsTableView dequeueReusableCellWithIdentifier:@"CardCell"];

        if(cell == nil)
        {
            cell = [goalDetailsTableView dequeueReusableCellWithIdentifier:@"CardCell"];
        }

    NSLog(@"%f", cell.cardDetails.frame.origin.x);
                [UIView animateWithDuration: 0.5 animations:^{
                    cell.cardDetails.frame = CGRectOffset(cell.cardDetails.frame, -322.0, 0.0);
                    //        CGRectOffset(cell.cardView.frame, -320.0, 0.0);
                    cell.actionCardReminder.frame = CGRectOffset(cell.actionCardReminder.frame, -322.0, 0.0);
                }];
                NSLog(@"%f", cell.cardDetails.frame.origin.x);

    return cell;
    }

单元格中的视图按预期移动但不是负面移动。它仍然显示cardDetails视图而不是actionCardReminder视图。

注意:NSLog将视图框显示为更改x位置,但视图未移动到-322.0位置。

2 个答案:

答案 0 :(得分:1)

由于iOS布局渲染过程,您的自定义UITableViewCell的layoutSubviews可能会多次调用。在您的情况下,您可以更改GoalDetailsTableViewCell类的layoutSubviews方法中的项目框架。

@implementation GoalDetailsTableViewCell

-(void)layoutSubviews
{
    [super layoutSubviews];
    [UIView animateWithDuration: 0.5 animations:^{
                    cell.cardDetails.frame = CGRectOffset(cell.cardDetails.frame, -322.0, 0.0);
                    //        CGRectOffset(cell.cardView.frame, -320.0, 0.0);
                    cell.actionCardReminder.frame = CGRectOffset(cell.actionCardReminder.frame, -322.0, 0.0);
                }];
     NSLog(@"%f", cell.cardDetails.frame.origin.x);
}
@end

答案 1 :(得分:-1)

请勿在{{1​​}}中更改框架尝试在cellForRowAtIndexPath方法

中更改框架