我想复制iOS消息标题栏标题视图在应用中的行为方式。 (特别是在后退按钮和信息按钮之间动态调整其内容的位置)。
我的方法是在笔尖中创建一个自定义视图,该视图将保存我的可视元素数据,并将这些视图放在堆栈视图中,然后使该堆栈查看我的导航项目的自定义标题视图。
在堆栈视图上使用子视图init会产生一个结果,它只是将每个子视图叠加在一起。使用帧初始化器为它提供静态帧。
我想尝试并获取条形按钮项的框架,但是如果有可用的话,我想要一种更加无缝的自动布局风格的实现方式。
我希望能够成为每个条形按钮项目之间的最大宽度。
这就是我现在正在使用的(从viewDidAppear
调用):
let frame = CGRect(x: 0, y: 0, width: 40, height: 58)
let aView = ConversationPartyView(frame: frame)
aView.avatar.backgroundColor = UIColor.gray
aView.name.text = "Kirk"
let bView = ConversationPartyView(frame: frame)
bView.avatar.backgroundColor = UIColor.red
bView.name.text = "Spock"
let stack = UIStackView(arrangedSubviews: [aView, bView])
stack.axis = .horizontal
navigationBar.topItem?.titleView = stack
答案 0 :(得分:0)
使用UIStackView
时,您无法控制视图的帧数。相反,您的View类应该覆盖intrinsicContentSize
,以证明其内容的适当大小,UIStackView将处理其余内容。
您还可以根据需要调整UIStackView
distribution
和spacing
。