我尝试选择字符串并使用UIStackView
在UILabel
中显示这些字符串,但我遇到的问题是他们没有在我的应用中显示他们的文字。我创建了以下游乐场:
import UIKit
import XCPlayground
let standardFrame = CGRect(x: 0, y: 0, width: 320, height: 480)
let stackView = UIStackView(frame: standardFrame)
stackView.backgroundColor = UIColor.blueColor()
let strings = ["Hello world", "Guten Tag", "Buenos Dias"]
strings.map { str in
let newLabel = UILabel()
newLabel.text = str
return newLabel
}.forEach(stackView.addArrangedSubview)
XCPlaygroundPage.currentPage.liveView = stackView
在辅助视图中,我看到一个带有预期大小的黑盒子,而不是带有文本的蓝色。
答案 0 :(得分:2)
UIStackView不会直接绘制到屏幕上,它只是为其排列的子视图设置约束,并将这些子视图直接绘制到屏幕上。它的背景颜色被忽略,因为它不会将自己绘制到屏幕上。要获得背景颜色,可以将其添加为UIView的子视图。
此外,文本标签需要将其颜色设置为非黑色,因为无法看到在黑色背景上呈现的黑色文本。以下代码应该在蓝色背景上创建一个漂亮的UIStackView白色文本。
import UIKit
import XCPlayground
let standardFrame = CGRect(x: 0, y: 0, width: 320, height: 480)
let rootView = UIView(frame: standardFrame)
rootView.backgroundColor = UIColor.blueColor()
let stackView = UIStackView(frame: standardFrame)
stackView.distribution = .EqualSpacing
stackView.alignment = .Center
let strings = ["Hello world", "Guten Tag", "Buenos Dias"]
strings.map { str in
let newLabel = UILabel()
newLabel.textColor = UIColor.whiteColor()
newLabel.text = str
return newLabel
}.forEach(stackView.addArrangedSubview)
rootView.addSubview(stackView)
XCPlaygroundPage.currentPage.liveView = rootView