从底部开始时UITableViewCell UITableViewAutomaticDimension问题

时间:2014-09-23 16:12:41

标签: uitableview autolayout ios8

我有一个有趣的问题。我有一个非常基本的tableview与一堆不同高度的单元格。它使用iOS 8 UITableViewAutomaticDimension和自动布局约束。

@interface ViewController () <UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (strong, nonatomic) NSArray *sentences;
@end


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.estimatedRowHeight = 44;
    self.tableView.rowHeight = UITableViewAutomaticDimension;

    self.sentences = @[
        @"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        @"Maecenas consectetur libero viverra sem viverra finibus.",
        @"Nunc arcu orci, pellentesque vel sapien nec, lobortis pulvinar magna"
    ];
    // and a bunch more, see example project

    [self scrollToBottom];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.sentences count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    SentenceCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.sentence = self.sentences[indexPath.row];
    return cell;
}

- (void)scrollToBottom {
    NSUInteger index = [self.sentences count] - 1;
    NSIndexPath *indexPath = [NSIndexPath indexPathForItem:index inSection:0];
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}

所以我想开始一直滚动到底部,你必须向上滚动才能看到更旧的东西。它基本上适用于聊天客户端。有两个问题:1,它实际上并没有滚动到底部,2,当你向上滚动时,细胞移动位置使滚动震动和怪异。一点也不顺利。

演示问题的示例项目:https://github.com/kevinrenskers/AutoHeightFromBottom。另请参阅https://github.com/smileyborg/TableViewCellWithAutoLayoutiOS8/issues/8

我该如何解决这个问题?像过去那样手动计算细胞高度?切换到集合视图?这会解决任何问题吗?

0 个答案:

没有答案