Ios UITableViewCell的UITextfield未以正确方式居中
我希望TableViewCells具有垂直居中的Ios UITableViewCell的UITextfield未以正确方式居中,ios,uitableview,swift,Ios,Uitableview,Swift,我希望TableViewCells具有垂直居中的UITextField。我想我确实将NSLayoutConstraint设置正确,但是textfield没有居中。我做错了什么 func createCellAsEditableCell(){ let textField = UITextField(frame: CGRectMake(0, 0, self.contentView.frame.width, self.contentView.frame.height)) let vie
UITextField
。我想我确实将NSLayoutConstraint
设置正确,但是textfield
没有居中。我做错了什么
func createCellAsEditableCell(){
let textField = UITextField(frame: CGRectMake(0, 0, self.contentView.frame.width, self.contentView.frame.height))
let views = ["textField" : textField]
self.contentView.addSubview(textField)
let horizontalConstraint = NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[textField]", options: NSLayoutFormatOptions(0), metrics: nil, views: views)
let verticalConstraint = NSLayoutConstraint(item: textField, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.contentView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
textField.setTranslatesAutoresizingMaskIntoConstraints(false)
self.contentView.setTranslatesAutoresizingMaskIntoConstraints(false)
NSLayoutConstraint.activateConstraints(horizontalConstraint)
NSLayoutConstraint.activateConstraints([verticalConstraint])
textField.placeholder = "Textfield"
}
我在这里看到的问题是,您同时混合了从代码设置帧和设置约束。您不希望将自动调整大小掩码转换为约束,然后将textField定位在容器中,但根据定位约束使其过大,无法适应contentView矩形(查看textField的宽度和为其设置的边距) 我要做的是: 1) 创建textfield,而不通过代码设置其框架(在objective-C中使用不同的初始化器->即[[UITextField alloc]init]) 2) 保持中心约束不变 3) 像这样设置垂直约束
V:|[textField]|
4) 设置水平方向,如下所示H:|-20-[textField]|
5) 不要在contentView上关闭TranslationAutoResizengMask,您不负责将其放置在其容器中,因此它显然是错误的 您是否为tableview实现了RowAtIndexPath的高度?看起来单元格的高度不是最佳的。是的,它已经实现了。谢谢你试着帮我,这就成功了。非常感谢。你能再告诉我一点,翻版自动保护面具到底做了什么?如果有帮助的话,请考虑一下投票。TranslateAuthorizingMask(将自动调整大小的掩码转换为约束)[对于未布局的组件,不应将其设置为“否”-基本上是说-未将其添加到视图层次结构:)