我目前有一个具有三种不同视图(顶部,中间和底部)的控制器。我想在中心区域添加几个小的文本字段/框(有点像他们用于pin代码的那些)。我目前的问题是我需要与我发送到此视图的单词的字符数量一样多的文本字段。
例如:如果单词是“四”,我需要四个文本字段,如果单词是“七”,我需要五个。
我的想法是创建一个textFields数组,遍历单词来计算字符数,然后填充数组。我认为下面的代码至少可以实现,但现在我想使用锚点将这些小文本域添加到centerView。
如何将这些框添加到视图中以便水平显示?
var arrayOfTextFields: [UITextField] = []
var game: Game? {
didSet {
if var answerContent = game?.answer {
for char in answerContent.characters {
let count = answerContent.characters.count
for _ in 1...count {
let myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 40, height: 60))
self.arrayOfTextFields.append(myTextField)
answerContent = answerContent.replacingOccurrences(of: "\(char)", with: "_")
}
}
}
}
}
我的中心视图:
func createCenterView() -> UIView {
let centerView = UIView()
centerView.backgroundColor = Constants.MAIN_THEME_COLOR
centerView.translatesAutoresizingMaskIntoConstraints = false
return centerView
}
答案 0 :(得分:1)
在swift中,没有必要使用循环。
let text = "seven"
let views = (0..<text.characters.count).map{ _ in UITextField(frame:.zero) }
使用UIStackView
或支持iOS 9的任何其他第三方StackView。
或其他布局系统,如Flexbox(SwiftBox)
或使用UICollectionView。