iOS中心UITableViewCell标签带有披露指示器

Joe*_*her 7 constraints objective-c uitableview ios

我正在寻找一种在表格单元格中输入标签的方法,该表格单元格也有一个披露指标.我现在遇到的问题是,在计算标签的位置时似乎忽略了披露指标

下图是:

图片

因此,您可以看到标签位于单元格左侧和指示器左侧之间的区域中,如果它位于单元格的中心,则它将位于导航栏标题下方.

感谢任何帮助谢谢

从故事板中

在此输入图像描述

nbu*_*urk 5

好的,首先为您的问题做一个解释。与解剖学有关UITableViewCell。随着解剖学,我说的是事实,UITableViewCell你仅仅是一个容器,另外的容器,这是contentView(你也可以看到这一个在你的故事板)。

Storyboard中操作时,您只能在而contentView不是在实际的上操作UITableViewCell。所以,当您设置您UILabel在X轴中心自动版式自动版式总是尽量在离市中心contentView,而不是在外部容器(即UITableViewCell)。然后,当您向中添加公开指示符UITableViewCellcontentView由于单元格为公开指示符腾出空间,并且要防止您在为公开指示符保留的正确区域中添加UI元素,因此该控件的宽度会自动缩小。

现在,您可以选择以下几种方法:

  1. 您可以直接编辑约束并为其添加一个常量(该常量必须与删除指标时标签被移动的值相同)

在此处输入图片说明

  1. 不要使用默认的披露指标(即不要在Storyboard中选中复选框),而只需添加一个UIImageView外观相同的图片即可。


Pav*_*rov 5

为了不被绑定到任何常量,你可以计算的宽度的不同framecontentView.frame。所以首先创建一个插座集合,如下所示:

@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *centerConstraintsToOffset;
Run Code Online (Sandbox Code Playgroud)

然后将要在单元格中水平居中的中心约束添加到该出口集合:

在此处输入图片说明

最后将此代码添加到您的单元格中:

override func layoutSubviews() {
    super.layoutSubviews()
    for constraint in centerConstraintsToOffset {
        constraint.constant = (frame.size.width - contentView.frame.size.width) / 2.0
    }
}
Run Code Online (Sandbox Code Playgroud)

这也使您可以随时随地灵活地添加或移除单元附件,并且您的视图将始终完美地居中对齐。即使您完全卸下配件。

  • 一个恼人的问题的绝佳解决方案——在运行时获取披露指示器的宽度。 (2认同)