gpt4 book ai didi

ios - layoutSubviews 在 UITableViewCell 上调用了两次

转载 作者:可可西里 更新时间:2023-11-01 03:34:40 27 4
gpt4 key购买 nike

我正在覆盖我的 UITableViewCell 子类中的 layoutSubviews。我注意到每个单元格都调用了 layoutSubviews 两次。在第二次调用时,内容 View 框架高度比第一次调用时的高度小 1:

@implementation MyUITableViewCellCell

+ (NSString *)asString:(CGRect) rect {
NSString *res = [[NSString alloc] initWithFormat:@"[%f %f %f %f]",
rect.origin.x, rect.origin.y, rect.size.width, rect.size.height];
[res autorelease];
return res;
}

- (void)layoutSubviews
{
[super layoutSubviews];
NSLog(@"Here I am %@ frame=%@ cvframe=%@,
self.text,
[MyUITableViewCellCell asString:self.frame],
[MyUITableViewCellCell asString:self.contentView.frame]);
}

@end

Controller 创建表格单元格的方式如下:

- (NSString*)dataAtIndex:(NSInteger)index
{
NSString* data = [[NSString alloc] initWithFormat:@"Row %d", index];
return [data autorelease];
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 30;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Alex";

NSInteger index = [indexPath row];
MyUITableViewCellCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[MyUITableViewCellCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.text = [self dataAtIndex:index];
return cell;
}

输出:

Here I am Row 0 frame=[0.000000 0.000000 320.000000 30.000000] cvframe=[0.000000 0.000000 320.000000 30.000000]
Here I am Row 1 frame=[0.000000 30.000000 320.000000 30.000000] cvframe=[0.000000 0.000000 320.000000 30.000000]
Here I am Row 0 frame=[0.000000 0.000000 320.000000 30.000000] cvframe=[0.000000 0.000000 320.000000 29.000000]
Here I am Row 1 frame=[0.000000 30.000000 320.000000 30.000000] cvframe=[0.000000 0.000000 320.000000 29.000000]

是否预期每个单元有 2 个调用,还是我做错了什么?

最佳答案

我的猜测是 UITableView 将单元格的高度调整了一个像素,以便为绘制分界线腾出空间。在 UITableView 为单元格设置新框架后,您的 layoutSubviews 方法再次被调用。

关于ios - layoutSubviews 在 UITableViewCell 上调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11547100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com