swift - 子视图未出现
问题描述
我正在快速学习,但在屏幕上显示多个子视图时遇到问题。当我创建两个堆栈视图并将它们添加到视图时self.view.addSubview()
,只会显示最后一个创建的视图。我读过“这个方法在任何其他子视图之上添加一个视图”,问题来自于此吗?
这是我的代码:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let hello = UILabel()
hello.text = "Hello"
hello.layer.borderWidth = 1
hello.textAlignment = NSTextAlignment.center
let world = UILabel()
world.text = "world"
world.layer.borderWidth = 1
world.textAlignment = NSTextAlignment.center
let testArray = [hello, world]
let stack = UIStackView()
stack.addArrangedSubview(hello)
stack.addArrangedSubview(world)
stack.frame = CGRect(x: 5.0, y: 10.0, width: 100.0, height: 50.0)
self.view.addSubview(stack)
let stack2 = UIStackView()
for e in testArray {
stack2.addArrangedSubview(e)
}
stackForIn.frame = CGRect(x: 5.0, y: 100.0, width: 100.0, height: 50.0)
self.view.addSubview(stackForIn)
不要关注我创建堆栈的方式,我目前只是在学习如何使用 UIStackView。
感谢您的帮助 !
解决方案
您可以使用此扩展来查看数组中 UIView 对象的子视图
extension UIView {
var allSubviews: [UIView] {
return self.subviews.reduce([UIView]()) { $0 + [$1] + $1.allSubviews }
}
}
希望这对您有所帮助:) 快乐编码
推荐阅读
- android - 在 Kotlin 中,我们一次可以在数据类主构造函数中声明多少个变量?
- ubuntu - 遵循官方说明后ffmpeg未安装
- gnuplot - 以递归方式更改绘图类型(带线,带点)
- java - 如何在android studio中修复java中的java运行时异常?
- controller - JUJU 引导错误无法引导模型:无法在可用区“默认”中启动引导实例:
- azure-cosmosdb - 将 Cosmos DB Flow 连接到 Power Apps
- python - 显示从 python 到 tkinter 的实际异常消息
- node.js - 基于 nodejs 的电报机器人的 Heroku 部署
- r - R - 根据同一行中的字符串修改值列
- reactjs - React 中的 Chrome 扩展事件处理程序