我正在使用StoryBoard和使用Autolayout,我在自定义单元格的运行时设置了约束。我也在 ViewDidLayoutSubviews 中设置了约束来处理设备方向。所以这需要时间来配置Cell并且我的单元格不是平滑滚动。任何人都可以帮我这个吗?如果我不在运行时设置约束,那么我应该在哪里设置它们?希望我是Clear.Thanks提前
答案 0 :(得分:0)
我和nburk在一起,用这个简短的细节来解决是不可能的。但是因为你在tableView中使用自定义单元格。每次创建单元格时,在cellForRowAtIndexPath方法中都可以使用 dispatch_async(dispatch_get_main_queue(),^ {......这里的代码用于自定义单元格.....}); //用于更新UI 我不确定但是因为你的线条显示屏幕UI没有及时更新。
答案 1 :(得分:0)
我建议你定义一个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