强制 UITableViewCell 在方向更改时保持对象右对齐

Posted

技术标签:

【中文标题】强制 UITableViewCell 在方向更改时保持对象右对齐【英文标题】:Force UITableViewCell to keep objects right-aligned on orientation change 【发布时间】:2011-03-28 22:27:06 【问题描述】:

我有一个 UITableViewCell。 textLabel.text 设置为某个值。在单元格的子视图中,我添加了 UILabel、UIButton 或 UITextField(每个单元格中只有一个)。我使用 CGRectMake 添加这些视图,这意味着我必须指定 X 位置。

但是当我改变 iPad 的方向时,UITableViewCell 会拉伸,因此 UILabel、UIButton 或 UITextField 不再正确对齐。它向左偏了几个像素,这使它看起来很丑。

如何使右侧的对象保持右对齐,即使方向发生变化?

(如果您转到 iPad 的“设置”——查看右侧视图中的设置——任何方向都会发生变化,并且它们会粘在 UITableViewCell 的右端。这就是我想要的效果。)

【问题讨论】:

【参考方案1】:

好的,想通了!只需将 UITableViewCell 的 accessoryView 属性设置为控件对象即可!

cell.accessoryView = the_control

无需纠结其他任何事情。我通过阅读ios Developer Library 中的 the Table View Programming Guide for the iOS 发现了这一点,我一开始就应该这样做 :-)

【讨论】:

我试图在 UITableViewCell 中对齐分组 UITableView 中的按钮。我一直试图在 contentView 中对齐它,但宽度只占用了这么多单元格。此外, UITableView 不提供水平边距。这解决了我的问题。无需对齐。谢谢!!! the_control 你的意思是 UIControl 元素,就像按钮一样。我明白了。【参考方案2】:

您应该设置待粘合视图的autoresizingMask 属性,使其与右边缘保持固定距离。在 IB 中,这是点击式操作,在代码中,这是由

 myview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin

【讨论】:

从你的解释中我无法推断出你的视图的确切结构,但如果视图不是 tableviewcell 的直接子视图,你应该注意在它们之间设置视图的自动调整掩码。跨度>

以上是关于强制 UITableViewCell 在方向更改时保持对象右对齐的主要内容,如果未能解决你的问题,请参考以下文章

在旋转时更改 UITableViewCell 中的文本对齐方式

我想在应用程序运行时更改应用程序的方向(仅限某些页面纵向和其他横向)

方向更改时的自定义 TableViewCell 自动布局问题

最佳实践:方向更改期间的 AsyncTask

编程界面方向更改不适用于 iOS

改变自定义uitableviewcell内容在不同方向的位置