【发布时间】:2020-05-12 08:17:23
【问题描述】:
我花了很长时间尝试堆叠我以编程方式创建的视图。我查看了来自Add views in UIStackView programmatically 的示例,但这没有用。下面列出的是代码,我从视图控制器调用setUpListings。有两个条目,但只显示一个条目。
import UIKit
import SnapKit
class ListingsView : UIView {
var containerView: UIView!
var listingsContainerView: UIStackView!
init() {
super.init(frame: CGRect.zero)
setUpContainerView()
setUpListingsContainer()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func setUpContainerView() {
containerView = UIView()
self.addSubview(containerView)
containerView.snp.makeConstraints { (make) in
make.height.equalTo(self)
make.width.equalTo(self)
containerView.backgroundColor = UIColor.white
}
}
func setUpListingsContainer() {
listingsContainerView = UIStackView()
listingsContainerView.distribution = .equalSpacing
listingsContainerView.alignment = .fill
listingsContainerView.axis = .vertical
listingsContainerView.spacing = 10
listingsContainerView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(listingsContainerView)
listingsContainerView.snp.makeConstraints { (make) in
make.top.equalTo(containerView)
make.left.equalTo(containerView)
make.bottom.equalTo(containerView)
make.right.equalTo(containerView)
}
}
func setUpListings(listings: [Listing]) {
for listing in listings {
let listingEntry = ListingEntry(listingId: listing.id)
listingsContainerView.addArrangedSubview(listingEntry)
}
}
class ListingEntry : UIView {
var listingId: String?
var containerView: UIView!
init(listingId: String) {
super.init(frame: CGRect.zero)
self.listingId = listingId
self.setUpContainerView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func setUpContainerView() {
containerView = UIView()
containerView.backgroundColor = UIColor.gray
self.addSubview(containerView)
containerView.snp.makeConstraints { (make) in
make.width.equalTo(150)
make.height.equalTo(150)
}
}
}
}
但是积木应该堆叠起来。
【问题讨论】:
-
您的约束似乎有问题。你为什么还要将
listingsContainerView配置添加到makeConstraints闭包中?在containerView.snp.makeConstraints闭包中,您甚至不使用make输入,而是使用锚点。这是错误的。 -
AlwaysNull --- 请查看How to Ask。你没有描述或展示你想要做什么......“我看了一些例子......但是没有用”并没有告诉我们任何事情。描述你想得到什么......也许包括你的目标的形象......显示你试图从示例中遵循的代码(NOT你在这里尝试使用 SnapKit ,因为这都是非常非常错误的)。
-
@DonMag 我更新了帖子,请指出我在使用 SnapKit 时做错了什么。