You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启isEditing状态后TableView文本对齐异常,原因是什么?

问题描述

重要提示: TableView约束代码位于单独文件中。

文本对齐异常示意图

编辑按钮代码

@objc func didTapEdit(){
    if plansListTableView.isEditing {
        plansListTableView.isEditing = false
    }
    else {
        plansListTableView.isEditing = true
    }
}

约束代码

private func addConstraints(){
    addSubview(planLabel)
    NSLayoutConstraint.activate([
        planLabel.centerYAnchor.constraint(equalTo: centerYAnchor),
        planLabel.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor, constant: 20)
    ])
}

当isEditing为true时,文本出现对齐异常,请问导致该问题的原因是什么?


问题原因及解决方法

原因是你把planLabel的leading约束绑定到了safeAreaLayoutGuide.leadingAnchor,而TableView进入编辑状态时,系统会自动在cell左侧添加编辑控件(删除/排序按钮),并调整cell的contentView内边距来适配这些控件。但你的label没有跟随contentView的内边距变化,依然固定在safeArea的位置,就会和编辑控件重叠,出现对齐异常。

同时你把centerY约束绑定到cell本身的centerYAnchor,也不如绑定到contentView准确,因为cell的布局逻辑都是基于contentView的。

修改后的约束代码应该是:

private func addConstraints(){
    addSubview(planLabel)
    NSLayoutConstraint.activate([
        planLabel.centerYAnchor.constraint(equalTo: contentView.centerYAnchor),
        planLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 20)
    ])
}

这样label会跟随contentView的内边距自动调整位置,编辑状态下就能正常对齐了。

内容的提问来源于stack exchange,提问作者user15200527

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:47:14