iOS:TableView не выполняет плавную прокрутку из-за установки ограничений во время выполнения в CellForRowAtIndexPath
Я использую StoryBoard и использую Autolayout, я установил ограничения во время выполнения для пользовательской ячейки. Также я установил ограничения в ViewDidLayoutSubviews для обработки ориентации устройства. Так что это занимает время для настройки ячейки, и моя ячейка не прокручивается плавно. Может ли кто-нибудь помочь мне в этом? Если я не должен устанавливать ограничения во время выполнения, то где я должен их установить? Надеюсь, я ясен. Заранее спасибо
2 ответа
Я с nburk, не возможно решить с этой короткой деталью. Но так как вы используете пользовательскую ячейку в tableView. В методе cellForRowAtIndexPath каждый раз при создании ячейки вы можете использовать dispatch_async(dispatch_get_main_queue(), ^{...... ваш код здесь для пользовательской ячейки..... }); // используется для обновления пользовательского интерфейса, я не уверен, но, поскольку ваши строки показывают экранный пользовательский интерфейс, не обновляются вовремя.
Я хотел бы предложить вам определить подкласс UITableViewCell и создать все ограничения в init
/initWithCoder:
метод.
И не забудьте правильно использовать ваши клетки. Таким образом, вы не будете повторно создавать ограничения вашей ячейки все время.
РЕДАКТИРОВАТЬ: взгляните на пример ниже.
static NSString* const kCellIdentifier = @"CustomTableViewCellIdentifier";
@implementation CustomTableViewController
- (void)viewDidLoad
{
[self.tableView registerClass:[CustomTableViewCell class] forCellReuseIdentifier:kCellIdentifier];
}
- (UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
CustomTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
// configure your cell here
return cell;
}
@end
@interface CustomTableViewCell: UITableViewCell
@end
@implementation CustomTableViewCell
- (instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier
{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
{
// add subviews and install constraints here. Don't forget to use contentView instead of cell when you install constraints.
}
return self;
}
@end