游乐场视图输出仅显示黑色视图

Playground view output only shows black view

我正在尝试选择一些字符串并使用 UILabel 将它们显示在 UIStackView 中,但我 运行 遇到了问题,因为它们没有显示它们的文本我的应用程序。我创建了以下游乐场:

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

在助手视图中,我看到一个具有预期大小的黑框,而不是带有文本的蓝色框。

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