Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextField内部UIStackView宽度约束上的间距问题_Ios_Swift_Uitextfield_Uistackview - Fatal编程技术网

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