操场视图输出仅显示黑色视图

时间:2016-03-08 18:22:31

标签: xcode uikit swift-playground uistackview

我尝试选择字符串并使用UIStackViewUILabel中显示这些字符串,但我遇到的问题是他们没有在我的应用中显示他们的文字。我创建了以下游乐场:

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

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

1 个答案:

答案 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