UITableViewCell 中看起来很奇怪的 UISwitch

Weird looking UISwitch in UITableViewCell

我将 UISwitch 作为子视图添加到 UITableViewCell 的 contentView 并将 isOn 设置为 true。切换后就变成了下面这个,看起来怪怪的

有谁知道为什么会发生这种情况以及如何解决这个问题?

奇怪的 UISwitch: https://dl.dropboxusercontent.com/u/43497092/Whosebug/Screen%20Shot%202015-06-12%20at%209.28.43%20AM.png

作为对比,一个普通的 UISwitch 应该是这样的:

普通UISwitch: https://dl.dropboxusercontent.com/u/43497092/Whosebug/Screen%20Shot%202015-06-12%20at%209.32.43%20AM.png

发生这种情况是因为我每次调用 "layoutSubviews" 时都会添加一个新开关。当开关的值发生变化时,将在前一个开关之上添加一个新开关。

解决方法是将之前的switch从super view中移除,然后将新的switch添加到view中。

您确实希望您的开关成为您自定义 UITableViewCell class 的一部分,并作为单元实例化的一部分创建。然后,您可以通过出列单元格的 属性 访问交换机。

layoutSubviews 不是添加控件的地方。您可能甚至不需要覆盖它,因为自动布局约束可以处理开关的布局。

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

并定义单元格值何时等于零。 那么switch就不会这样了