UITableViewCell accessoryView元素的垂直中心

时间:2015-01-31 16:41:35

标签: ios objective-c

如何从UITableViewCell垂直居中我在accessoryView内的内容?内容由动态添加的UISwitch表示,使用:

将宽度和高度调整为50%
switchView.transform = CGAffineTransformMakeScale(0.5, 0.5);

有问题的图片是:

3 个答案:

答案 0 :(得分:0)

在界面构建器中设置适当的约束:"容器中的垂直中心"。

Screenshot

我不建议减少标准UI元素的大小。

答案 1 :(得分:0)

您无法更改accessoryView的位置。请参考以下问题:

Can a standard accessory view be in a different position within a UITableViewCell?

您可以将缩放和旋转等变换应用于附件视图。但是,您无法将转换转换应用于附件视图。例如,

switchView.transform = CGAffineTransformTranslate(CGAffineTransformMakeScale(0.5, 0.5),10,10); 

仅将转换的比例部分应用于switchView。仔细阅读Apple文档,我还发现了以下注意事项:

  

......附件视图显示在单元格的右侧。

我认为苹果不希望您定制配件视图的位置。根据你的问题,我也尝试更改accessoryView的中心和框架,我注意到accessoryView的位置根本没有移动。

简而言之,如果您真的想要更改UISwitch的大小并将其移动到垂直对齐表格视图单元格中,我认为您只有一个选项:您必须添加{{ 1}}作为单元格的子视图,然后你必须自由地做任何你想做的事情。

答案 2 :(得分:0)

我能做到这一点的最好方法是通过继承UITableViewCell,并覆盖layoutSubviews并将accessoryView定位在那里:

- (void)layoutSubviews {
    [super layoutSubviews]; 
    self.accessoryView.frame = CGRectMake(self.accessoryView.frame.origin.x + (self.accessoryView.frame.size.width / 2), (self.frame.size.height - (self.accessoryView.frame.size.height / 2)) / 2, self.accessoryView.frame.size.width, f.size.height);
}

我可能会建议您不要调整Apple预构建的UI组件的大小,特别是因为Apple's Human Interface Guidelines建议:

  

为可触发控件提供大约44 x 44点的命中目标。

调整大小的开关更小。

尽管如此,我希望这有帮助!