Ios UITextField内部UIStackView宽度约束上的间距问题
我有一个垂直的Ios UITextField内部UIStackView宽度约束上的间距问题,ios,swift,uitextfield,uistackview,Ios,Swift,Uitextfield,Uistackview,我有一个垂直的UIStackView,里面有各种UITextFields(现在只有4个)。当我给出视图的间距时,我给出了下面的错误 我想要的是,例如UIStackView有110磅的宽度和10个空格,那么UITextFields应该有20磅((20*4)+(3*10),也就是110)。因此,所有UITextFields都应该具有相同的宽度(填充相同) 我怎样才能做到这一点 编辑:我想我需要为一个文本字段指定至少一个宽度,所以我添加了 field.widthAnchor.constraint(e
UIStackView
,里面有各种UITextFields
(现在只有4个)。当我给出视图的间距时,我给出了下面的错误
我想要的是,例如UIStackView
有110磅的宽度和10个空格,那么UITextFields
应该有20磅((20*4)+(3*10),也就是110)。因此,所有UITextFields
都应该具有相同的宽度(填充相同)
我怎样才能做到这一点
编辑:我想我需要为一个文本字段指定至少一个宽度,所以我添加了
field.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: (CGFloat(0 / textFields.count)),constant: CGFloat(10 * (textFields.count - 1))).isActive = true
然而,这也给出了中断错误
EDIT2:此堆栈视图位于自定义UIView中,我在其中提供锚定
override init(frame: CGRect) {
super.init(frame: frame)
//Where I gave all anchors
setupUI()
}
以及如何初始化此自定义UIView
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.view.backgroundColor = UIColor.white
self.view.addSubview(otpField)
otpField.anchor(self.view.topAnchor, left: self.view.leftAnchor, bottom: nil, right: self.view.rightAnchor, topConstant: 40, leftConstant: 40, bottomConstant: 0, rightConstant: 40, widthConstant: 0, heightConstant: 60)
}
我想在图片中实现的目标:
如果您已经设置了
stackView.distribution=.fillEquality
向任何文本字段添加一个约束,则只需为高度添加一个约束,如下所示
let height = NSLayoutConstraint(item: textField1, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1.0, constant: 40.0)
textField1.addConstraint = height
通过这种方式,所有文本字段的高度都将为40,总大小将取决于给定的项目数和间距,即高度=40
,间距=10
,那么总高度将为(高度*文本字段数)+(空格*(文本字段数-1))
注意:垂直和水平堆叠视图的概念相同,您需要使用高度和宽度
如果您已经设置了
stackView.distribution=.fillEquality
将一个约束添加到任何文本字段,则只需为高度添加一个约束,如下所示
let height = NSLayoutConstraint(item: textField1, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1.0, constant: 40.0)
textField1.addConstraint = height
通过这种方式,所有文本字段的高度都将为40,总大小将取决于给定的项目数和间距,即高度=40
,间距=10
,那么总高度将为(高度*文本字段数)+(空格*(文本字段数-1))
注意:垂直和水平堆叠视图的概念相同,您需要使用高度和宽度
指定特定高度为40也会打破限制。这可能是由于与其他UI元素的相关性造成的。但是我的Stackview是垂直的,而不是水平的,所以我的问题是宽度而不是高度。好的,所以只需将高度限制改为宽度。你能显示你的ViewControllerGiving特定高度为40也打破了限制。这可能是由于与其他UI元素的相关性造成的。但是我的Stackview是垂直的,而不是水平的,所以我的问题是宽度而不是高度。好的,所以只需将高度限制更改为宽度。你能显示你的ViewControllerIt有垂直轴吗。很抱歉,我的问题,我忘了更改它。如果你的意思是,UITextfield的宽度锚点,我是在将textfield添加到UIStackview后编写的。我希望它是垂直的,我在自定义UIView中进行编辑,我编辑了我的问题,你能检查一下吗?我添加了如何初始化自定义UIView。我还添加了一张图片以更清晰。它有垂直轴。很抱歉,我的问题,我忘了更改它。如果你的意思是,UITextfield的宽度锚点,我是在将textfield添加到UIStackview后编写的。我希望它是垂直的,我在自定义UIView中进行编辑,我编辑了我的问题,你能检查一下吗?我添加了如何初始化自定义UIView。我还添加了一张图片以更清晰。
let height = NSLayoutConstraint(item: textField1, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1.0, constant: 40.0)
textField1.addConstraint = height