我有一个有趣的问题。我有一个非常基本的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。
我该如何解决这个问题?像过去那样手动计算细胞高度?切换到集合视图?这会解决任何问题吗?