滚动后布局约束发生变化

时间:2015-01-21 05:42:48

标签: ios uitableview nslayoutconstraint

所以我有一个N行数的tableview。 tableview的设计就像一条游泳跑道。每排都有游泳运动员的形象,游泳运动员的X位置取决于他们在比赛中的位置。

UITableViewCell采用IB设计并使用Autolayout Constraints。

每个细胞游泳者从阵列的索引中获取他们的位置,即......

//方法 - cellForRowAtIndexPath:

cell.swimmerLeading.constant = [_array [indexPath.row] integerValue]

每当我滚动时,swimmerLeading.constant都会重置回原来的值8;

有关原因的任何线索?

- (void)viewDidLoad {
...
[self registerNib:[UINib nibWithNibName:@"RacePredictorTrackTableViewCell" bundle:nil] forCellReuseIdentifier:@"TrackCell"];
...

}
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == TableSectionTrack) {

        RacePredictorTrackTableViewCell *cell = (RacePredictorTrackTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"TrackCell" forIndexPath:indexPath];
        cell.delegate = self;
        cell.indexPath = indexPath;

        Runner *runner = _runners[indexPath.row];

        cell.isStarred = NO;
        cell.cellPositionlabel.text = runner.predictorPlace;
        cell.cellPercentageFloat = runner.predictorRanking.floatValue;

        return cell;
    }
}

cell.cellPercentageFloat只是一个setter方法,它将值设置为两个约束,游泳者和游泳者的标签

RacePredictorTrackTableViewCell.m

- (void)setCellPercentageFloat:(CGFloat)cellPercentageFloat {
    cellPercentageFloat = cellPercentageFloat / 100;
    CGFloat labelWidth = _cellHorseLabel.intrinsicContentSize.width;
    CGFloat labelRaceLineBuffer = 8;
    _horseImageViewLeading.constant = (self.totalSpace * cellPercentageFloat) + kOriginalHorseImageViewLeading;;

    if ((_horseImageViewLeading.constant + _horseImageViewWidth.constant) > labelWidth) {
        _horseLabelLeading.constant = (_horseImageViewLeading.constant + _horseImageViewWidth.constant) - labelWidth - labelRaceLineBuffer;
    } else {
        _horseLabelLeading.constant = _horseImageViewLeading.constant;
    }

}

0 个答案:

没有答案