2017-04-26 63 views
0

我想复制iOS消息的标题栏标题视图在应用程序中的行为方式。 (特别是在后退按钮和信息按钮之间动态调整其内容的位置)。用于UINavigationItem标题视图的框架

我的方法是创建一个笔尖,将举行我的视觉元素的数据,并把这些意见堆栈视图中,然后使该堆栈查看我的导航项目的自定义标题视图自定义视图。

在堆栈视图中使用子视图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

当使用UIStackView你不再有你的观点的帧的控制。相反,您的视图类应该覆盖intrinsicContentSize也证明他们的内容适当的大小和UIStackView将处理其余的。

您还可以根据需要调整UIStackViewdistributionspacing

+0

我明白你在说什么,但是当我给它的框架属性一个值时,堆栈视图似乎表现正确,我认为我的问题是需要为堆栈视图本身获得一个动态框架。至少要足够宽以占据酒吧按钮项目之间的空间。 –

+0

啊我认为看到更多你问。你有你的StackView不会取代导航栏,而是作为titleView。你想要它根据酒吧按钮和旋转水平调整其框架? –

+0

就是这样。 –