(带故事板的iOS 8) 我的tableView上有一个正确的UITableViewCell细节。
在storyboard中,Title和Right Detail标签设置为numberoflines = 0
我的代码:
function memoize(fn) {
var memory = new Map();
return function(arg) {
if (memory.has(arg)) {
console.log('using memory');
return memory.get(arg);
} else {
var result = fn(arg);
memory.set(arg, result);
return result;
}
};
}
var fn = (n) => 2 * n
var m_fn = memoize(fn)
console.log(fn(18));
console.log(m_fn(18));
console.log(m_fn(18)); // outputs also "using memory"
在cleanJson结束时,我运行- (void)viewDidLoad {
[super viewDidLoad];
keyArray = [[NSMutableArray alloc]init];
self.table.estimatedRowHeight = 140.0;
self.table.rowHeight = UITableViewAutomaticDimension;
[spinner startAnimating];
[self cleanJson:prunedDictionary];
}
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;
}
- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{
return UITableViewAutomaticDimension;
}
。
TableViewCell会调整大小,但它们都调整到相同的大小,看起来像是默认大小。 (我知道他们调整大小的原因是因为在Storyboard中我将高度设置为200,并且当应用程序运行时它们都被调整为更小的尺寸)
为什么他们没有正确调整大小?
答案 0 :(得分:1)
问题是您使用的是内置单元格类型以及内置标题和详细信息标签。那些细胞类型不是自我大小的。
您必须使用自定义单元格并自行设计,并使用从内到外调整单元格大小的约束。
答案 1 :(得分:0)
您不需要这两种委托方法中的任何一种。单元格没有正确调整大小,因为您的自动布局约束设置是incorect.Check这些约束并确保从上到下至少存在一个约束视图路径。我的意思是你能够逻辑地从单元格的顶部跳跃..从所有的视图和垂直的constraitns之间,然后到底部。
像这样:超级视图的顶部
保证金约束
视图
保证金约束
视图
保证金约束
超级视图的底部。中间的视图必须被限制为固定大小..或者他们必须能够根据其内容调整大小。很明显,最终高度是所有边距和视图高度的组合。
它是一个线性函数
finalheight = topmargin + viewHeight + margin + viewHieght..etc....etc..bottommargin
答案 2 :(得分:0)
实际上有一种方法 - 但我更喜欢创建自定义UITableViewCell
:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let cell = self.tableView(tableView, cellForRowAt: indexPath)
let targetSize = CGSize(width: self.tableView.bounds.width, height: CGFloat.infinity)
return cell.systemLayoutSizeFitting(targetSize,
withHorizontalFittingPriority: 1000,
verticalFittingPriority: 900).height
}