【发布时间】:2019-01-20 21:45:56
【问题描述】:
我尝试添加UIStackView 作为UIBarButtonItem 的自定义视图。
我首先尝试添加 UIView 作为自定义视图。
let list = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 44))
list.backgroundColor = .green
list.addSubview(stackView)
let item = UIBarButtonItem(customView: list )
topViewController?.setToolbarItems([item], animated: true)
这行得通。我在UIToolBar 中得到一个绿色条。然后我尝试将UIStackView 添加到UIView。
let red = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 30))
red.backgroundColor = .red
let stackView = UIStackView(frame: CGRect(origin: CGPoint.zero,
size: CGSize(width: 250, height: 44)))
stackView.distribution = .fillEqually
stackView.axis = .horizontal
stackView.spacing = 5
stackView.alignment = .center
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.addArrangedSubview(red)
let list = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 44))
list.backgroundColor = .green
list.addSubview(stackView)
let item = UIBarButtonItem(customView: list )
topViewController?.setToolbarItems([item], animated: true)
但是,当我尝试这个时,什么也没有发生。 UIToolBar 似乎是空的。我做错了什么?
【问题讨论】:
-
你为什么不使用多个项目而不是尝试将它们全部放在堆栈视图中?
-
@LeoDabus 用于它们之间的间距。我找不到改变
UIToolBar中各个项目之间间距的好方法,所以我认为这是第二好的解决方案。 -
如果需要,您可以使用灵活宽度的项目
-
@LeoDabus 好吧,我需要的空间比项目之间的默认宽度要少。所以这就是为什么。
-
没有运行您的代码,但对我来说似乎没问题,顺便说一句,您可以查看约束是否有效/无效