Xcode版本11.5(11E608C)。 我有一个包含多个部分的UITableView。 在一个部分中,我将一个单元格(包括约束)复制(复制/粘贴)到下面。 这个新单元格的包含标签前界比原来的左8个点,因此不是垂直对齐的,你可以在下面的截图上看到。 这绝对不是我想要的。
然而,当我在模拟器和实际设备中运行该项目时,下载周期3和4的左边界是正确对齐的。
下载期间标签的Xcode视图尺寸为:
下载期间3:x=16,y=11,width=324,height=22
下载期间4:x=8,y=11,width=333,height=22
除上述内容外,来自Identity,Attributes和Size检查器的所有数据对于两个单元格都是相同的(下载周期3和4)。
如果将下载周期4的值调整为下载周期3的值,则会收到下载周期4的错位视图
警告:预期x=8,width=333
实际x=16,width=324
没有涉及到可能干扰布局的代码。
这里我使用的约束条件(显示了下载周期4,下载周期3相同):
这可能是任何东西。 从Xcode bug到愚蠢的错误。 底线是,我找不到问题的根源。 我想了解为什么单元格的复制会改变包含对象的尺寸和位置,以及为什么情节提要在模拟器和实际设备上显示不对齐而不是正确对齐。 我看不出这里出了什么问题。
----更新05.06.2020 14:00 UTC------
我检查了main.storyboard xml文件,将下载期间3和4的相关部分提取到单独的文件中,并运行diff命令。 除了身份证,所有的都是一样的!
在手动将下载周期4调整为x=16,width=324之后,我在前界看到了橙色虚线。 这意味着我的约束与我的实际视图不匹配。 看来(?!) 超级视图或边距的边界已从一个单元格更改到另一个单元格。 AFAIK这是不可能的?
在上面,我注意到所有低于下载期4的单元格(甚至通过新的部分)都有同样的问题。 超级视图+边距上的前/后界多了8个右点&; 左(所以总共16个)。
我的建议是不要复制和粘贴单元格,而是从库中拖放一个单元格,然后从头开始添加约束。 也可以选择复制的单元格并清除所有约束,然后再次添加它们。