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
Другие вопросы по тегам