UINavigationItem标题视图的框架

时间:2017-04-26 15:39:33

标签: ios swift uikit uinavigationbar uinavigationitem

我想复制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

1 个答案:

答案 0 :(得分:0)

使用UIStackView时,您无法控制视图的帧数。相反,您的View类应该覆盖intrinsicContentSize,以证明其内容的适当大小,UIStackView将处理其余内容。

您还可以根据需要调整UIStackView distributionspacing