swift - 无法弄清楚为什么我的堆栈视图没有垂直排列
问题描述
我已经这样做了很多次,但这次由于某种原因不会像往常那样工作。我在这里做错了吗?我只是想将两个视图放入我的 UIstackView 并垂直分布它们。它似乎不断重叠并遍布整个地方。在某一时刻,它甚至只显示一种视图。
我的 viewdidload():
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
view.addSubview(headerView)
view.addSubview(contentView)
contentView.addSubview(contentStack)
headerView.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.30).isActive = true
headerView.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
headerView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
headerView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
contentView.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.70).isActive = true
contentView.widthAnchor.constraint(equalTo: self.view.widthAnchor,multiplier: 0.90).isActive = true
contentView.topAnchor.constraint(equalTo: headerView.bottomAnchor,constant: 20).isActive = true
contentView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
}
我的观点和标签:
fileprivate lazy var headerView : UIView = {
var view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = .black
return view
}()
fileprivate lazy var contentView : UIView = {
var view = UIView()
view.backgroundColor = .lightGray
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
fileprivate lazy var contentStack : UIStackView = {
var stack = UIStackView(arrangedSubviews: [EarningsView,ListingsView,])
stack.translatesAutoresizingMaskIntoConstraints = true
stack.distribution = .fillEqually
stack.alignment = .fill
stack.axis = .vertical
// stack.spacing = 5
return stack
}()
fileprivate lazy var EarningsView : UIView = {
let EarningsView = UIView()
EarningsView.translatesAutoresizingMaskIntoConstraints = false
EarningsView.backgroundColor = .blue
EarningsView.addSubview(EarningsLabel)
EarningsView.addViewBorder(borderColor: UIColor.black.cgColor, borderWith: 0.5, borderCornerRadius: 0.0)
return EarningsView
}()
fileprivate lazy var EarningsLabel : UILabel = {
let EarningsLabel = UILabel()
EarningsLabel.translatesAutoresizingMaskIntoConstraints = false
let earningsText = NSAttributedString(string: "My Earnings", attributes: self.stringAttrib)
EarningsLabel.attributedText = earningsText
EarningsLabel.textColor = .black
EarningsLabel.backgroundColor = .white
EarningsLabel.textAlignment = .center
return EarningsLabel
}()
fileprivate lazy var ListingsView : UIView = {
let ListingsView = UIView()
ListingsView.translatesAutoresizingMaskIntoConstraints = false
ListingsView.addSubview(ListingLabel)
ListingsView.addViewBorder(borderColor: UIColor.black.cgColor, borderWith: 0.5, borderCornerRadius: 0.0)
ListingsView.backgroundColor = .red
return ListingsView
}()
fileprivate lazy var ListingLabel : UILabel = {
let ListingLabel = UILabel()
ListingLabel.translatesAutoresizingMaskIntoConstraints = false
let listingText = NSAttributedString(string: "My Listing", attributes: self.stringAttrib)
ListingLabel.attributedText = listingText
return ListingLabel
}()
这让我发疯了,因为我以前做过很多次,现在我花了至少 6 个小时在这个小部分上试图弄清楚。当然,我可以创建一个全新的视图控制器,但我只是想弄清楚这一点。
解决方案
EarningsView、EarningsLabel、ListingsView、ListingLabel 有
translatesAutoresizingMaskIntoConstraints = false
但是它们没有添加任何约束来替换 Autoresizing 约束,所以它们只是表现得愚蠢并上升到左上角。我以前见过这样的东西。在我的东西上。要么自动调整大小,要么加入约束。
推荐阅读
- javascript - JSDoc:将类型分配给内联变量
- php - 注意警报试图获取非数组 var 的索引
- node.js - Node.js 应用程序未在 AWS Elastic Beanstalk 上运行
- javascript - 将数据推入数组 Ajax
- azure - Azure 容器实例未连接 kafka 集群
- json - 使用 mongo-go-driver 将结果转换为没有结构的 JSON
- c - 为什么 char * 和 char ** 具有相同的值?
- apostrophe-cms - 使用 apostrophe-monitor 调试带有断点的 Apostrophe CMS
- css - 能够在 Css、Less、scss 上使用循环代替
- qt - 使 QDialog 窗口适合文本大小