我希望我的堆栈视图有三个视图:红色图像,蓝色图像和寄存器视图。问题是,虽然红色和蓝色按钮看起来很好,但寄存器视图却没有。
这是我在视图控制器视图中设置和放置堆栈视图的方法:
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。
为什么这两个图像和寄存器视图不是?我错过了什么吗?
答案 0 :(得分:2)
您似乎没有给您的UIButton一个帧大小。如果添加autoresizingMask行,请查看您获得的内容:
registerButton.addTarget(self, action: #selector(presentRegisterController), for: .touchUpInside)
registerButton.autoresizingMask = [.flexibleWidth, .flexibleHeight]
containerView.addSubview(registerButton)
答案 1 :(得分:2)
未显示的视图是容器UIView
,它没有内在大小。在lazy var
块内,将registerButton
的边缘约束到containerView
,以便容器视图具有大小。
答案 2 :(得分:1)
看起来你正在制作一个UIView的子类,以便显示一个说“注册?”的按钮。这太复杂了,UIButton已经是UIView的子类,所以你需要做的就是直接将注册按钮添加到你的stackview!希望有所帮助
答案 3 :(得分:0)
首先在 stackview 中添加所有3个视图。从右侧设置属性检查器的间距和分布 ..eg(spacing = 10,distribution = fill equality)。现在选择堆栈视图并添加相应的约束
你可以试试这个。
答案 4 :(得分:0)
对我来说,我需要为堆栈视图中的视图添加底部,右侧和左侧约束。然后它出现了。