我遇到的奇怪错误..
这段代码:
// Label 1
let textLabel1 = UILabel()
textLabel1.backgroundColor = UIColor.yellow
textLabel1.text = "Label1"
textLabel1.textAlignment = .center
// Label 2
let textLabel2 = UILabel()
textLabel2.backgroundColor = UIColor.blue
textLabel2.text = "Label2"
textLabel2.textAlignment = .center
// Label 3
let textLabel3 = UILabel()
textLabel3.backgroundColor = UIColor.green
textLabel3.text = "Label3"
textLabel3.textAlignment = .center
let h1StackView = UIStackView()
h1StackView.axis = UILayoutConstraintAxis.horizontal
h1StackView.distribution = .fillEqually
h1StackView.alignment = UIStackViewAlignment.fill
h1StackView.spacing = 0
h1StackView.addArrangedSubview(textLabel3)
h1StackView.addArrangedSubview(textLabel2)
self.view.addSubview(h1StackView)
let h2StackView = UIStackView()
h2StackView.axis = UILayoutConstraintAxis.horizontal
h2StackView.distribution = .fillEqually
h2StackView.alignment = UIStackViewAlignment.fill
h2StackView.spacing = 0
h2StackView.addArrangedSubview(textLabel3)
h2StackView.addArrangedSubview(textLabel1)
self.view.addSubview(h2StackView)
//Stack View
let stackView = UIStackView(frame: CGRect(x: 0, y: pos.VERT_STACK_Y, width: pos.SCREEN_WIDTH, height: pos.VERT_STACK_HEIGHT))
stackView.axis = UILayoutConstraintAxis.vertical
stackView.distribution = .fillEqually
stackView.alignment = UIStackViewAlignment.fill
stackView.spacing = 0
stackView.addArrangedSubview(h1StackView)
stackView.addArrangedSubview(h2StackView)
self.view.addSubview(stackView)
给出这个 View : Buggy Image 1
这接近正确,但错误,因为我不希望看到那个大的蓝色条,而是一半蓝色 - 一半绿色。
虽然对我来说有点奇怪......
如果我只更改代码中的一个字符(textLabel2 到 textLabel1):
(这个):
let h1StackView = UIStackView()
h1StackView.axis = UILayoutConstraintAxis.horizontal
h1StackView.distribution = .fillEqually
h1StackView.alignment = UIStackViewAlignment.fill
h1StackView.spacing = 0
h1StackView.addArrangedSubview(textLabel3)
h1StackView.addArrangedSubview(textLabel2)
self.view.addSubview(h1StackView)
(对此):
let h1StackView = UIStackView()
h1StackView.axis = UILayoutConstraintAxis.horizontal
h1StackView.distribution = .fillEqually
h1StackView.alignment = UIStackViewAlignment.fill
h1StackView.spacing = 0
h1StackView.addArrangedSubview(textLabel3)
h1StackView.addArrangedSubview(textLabel1)
self.view.addSubview(h1StackView)
然后我得到这个 View :
似乎有两个问题,我也不能完全解决..有什么想法吗?我希望这是我的问题,而不是 Swift/Xcode 的问题。
(附:抱歉没有足够的代表嵌入图片)
最佳答案
主要问题在于 一次只能在一个 View 内 的逻辑,所以首先当您重复将 lbl3 添加到两个水平 stackViews 时,它出现在最后一个(stack2),当你重复添加 1,3 时,它们只显示在水平堆栈 2 中,所以要重复你必须创建另一个对象,如果你决定创建一个主堆栈来保存 2 个水平堆栈,那么评论这些 2线条
self.view.addSubview(h1StackView)
self.view.addSubview(h2StackView)
关于Swift 4,UIStackViews 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51995418/