堆栈视图的子视图之一根本没有显示
One of the subviews of a stack view not showing up at all
我希望我的堆栈视图具有三个视图:红色图像、蓝色图像和注册视图。问题是,虽然红色和蓝色按钮显示得很好,但注册视图却没有。
这就是我在视图控制器视图中设置和放置堆栈视图的方式:
func setupSocialStackView() {
let socialStackView = UIStackView(arrangedSubviews: redImage, blueImage, registerView])
socialStackView.axis = .vertical
socialStackView.distribution = .fillProportionally
view.addSubview(socialStackView)
socialStackView.spacing = 8
// NSLayoutAnchor constraints here to place stack view
// inside my view controller view
}
这是我的注册视图的代码,它没有显示:
lazy var registerView: UIView = {
let containerView = UIView()
// Register button
let registerButton = UIButton(type: .system)
registerButton.setTitle("Register", for: .normal)
registerButton.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: UIFontWeightLight)
registerButton.titleLabel?.textAlignment = .center
registerButton.setTitleColor(UIColor.black, for: .normal)
registerButton.titleLabel?.textColor = UIColor(r: 91, g: 90, b: 90)
registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside)
containerView.addSubview(registerButton)
return containerView
}()
堆栈视图的另外两个排列视图是UIImageView
s.
为什么有两张图片,注册视图没有?我错过了什么吗?
看起来您正在创建 UIView 的子类,以便显示一个显示 "Register?" 的按钮。那太复杂了,UIButton 已经是 UIView 的子类,所以您需要做的就是将注册按钮直接添加到您的堆栈视图中!希望有帮助
您似乎没有为 UIButton 指定框架大小。如果添加 autoresizingMask 行,看看会得到什么:
registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside)
registerButton.autoresizingMask = [.flexibleWidth, .flexibleHeight]
containerView.addSubview(registerButton)
未显示的视图是容器 UIView
,它没有固有大小。在 lazy var
块内,将 registerButton
的边缘限制到 containerView
,以便容器视图具有大小。
首先将所有 3 个视图添加到 stackview 中。从右边的属性检查器 side.eg(spacing=10, distribution=fill equality) 设置它的 Spacing 和 distribution。现在 select 堆栈视图并添加相应的约束。
你可以试试这个。
对我来说,我需要为堆栈视图中的视图添加底部、右侧和左侧约束。然后就出现了。
我希望我的堆栈视图具有三个视图:红色图像、蓝色图像和注册视图。问题是,虽然红色和蓝色按钮显示得很好,但注册视图却没有。
这就是我在视图控制器视图中设置和放置堆栈视图的方式:
func setupSocialStackView() {
let socialStackView = UIStackView(arrangedSubviews: redImage, blueImage, registerView])
socialStackView.axis = .vertical
socialStackView.distribution = .fillProportionally
view.addSubview(socialStackView)
socialStackView.spacing = 8
// NSLayoutAnchor constraints here to place stack view
// inside my view controller view
}
这是我的注册视图的代码,它没有显示:
lazy var registerView: UIView = {
let containerView = UIView()
// Register button
let registerButton = UIButton(type: .system)
registerButton.setTitle("Register", for: .normal)
registerButton.titleLabel?.font = UIFont.systemFont(ofSize: 12, weight: UIFontWeightLight)
registerButton.titleLabel?.textAlignment = .center
registerButton.setTitleColor(UIColor.black, for: .normal)
registerButton.titleLabel?.textColor = UIColor(r: 91, g: 90, b: 90)
registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside)
containerView.addSubview(registerButton)
return containerView
}()
堆栈视图的另外两个排列视图是UIImageView
s.
为什么有两张图片,注册视图没有?我错过了什么吗?
看起来您正在创建 UIView 的子类,以便显示一个显示 "Register?" 的按钮。那太复杂了,UIButton 已经是 UIView 的子类,所以您需要做的就是将注册按钮直接添加到您的堆栈视图中!希望有帮助
您似乎没有为 UIButton 指定框架大小。如果添加 autoresizingMask 行,看看会得到什么:
registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside)
registerButton.autoresizingMask = [.flexibleWidth, .flexibleHeight]
containerView.addSubview(registerButton)
未显示的视图是容器 UIView
,它没有固有大小。在 lazy var
块内,将 registerButton
的边缘限制到 containerView
,以便容器视图具有大小。
首先将所有 3 个视图添加到 stackview 中。从右边的属性检查器 side.eg(spacing=10, distribution=fill equality) 设置它的 Spacing 和 distribution。现在 select 堆栈视图并添加相应的约束。
你可以试试这个。
对我来说,我需要为堆栈视图中的视图添加底部、右侧和左侧约束。然后就出现了。