2017-04-26 75 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

就是這樣。 –