【问题标题】:Playground view output only shows black viewPlayground 视图输出仅显示黑色视图
【发布时间】:2016-03-08 18:22:30
【问题描述】:

我正在尝试选择字符串并使用UILabels 在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

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

【问题讨论】:

    标签: xcode uikit swift-playground uistackview


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多