簡體   English   中英

UISplitViewController:DetailViewController 中的 titleView 在橫向上消失,預期行為?

[英]UISplitViewController: titleView in DetailViewController disappears on landscape orientation, intended behaviour?

我正在使用navigationItem.titleView為 Master/Detail VC 在導航欄中添加自定義titleView 在將設備的方向更改為橫向時, MasterViewController下的titleView工作正常,但對於DetailViewController titleView消失了。 在將方向改回縱向時, titleView出現在DetailViewController 我還附上了源代碼和視頻的鏈接。

這是有意的行為還是我犯了錯誤,還是蘋果方面的問題?

//Custom Title View:
class TitleView: UIView {
    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: 50, height: 20)
    }
}

class DetailViewController: UIViewController {
    override func viewDidLoad() {
       super.viewDidLoad()
       //Adding titleView for Master/Detail VC:
       navigationItem.titleView = {
            //Setting frame size here, did not make any difference
            let view = TitleView(frame: .zero)
            view.backgroundColor = .red
            return view
       }()
    }
}

完整源代碼在這里: https : //github.com/avitron01/SplitViewControllerIssue/tree/master/MathMonsters

突出問題的視頻: https : //vimeo.com/336288580

我遇到過同樣的問題。 這似乎是一個iOS錯誤。 我的解決方法是在每個視圖布局上重新分配標題視圖。 我在我的DetailViewController使用了這段代碼:

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    if let v = navigationItem.titleView {
        navigationItem.titleView = nil
        navigationItem.titleView = v
    }
}

對於那些偶然發現這一點的人,另請參閱iOS 11 navigationItem.titleView Width Not Set 基本上,有兩種建議的解決方法:

  • 使用自定義 UIView 告訴 iOS 使用UIView.layoutFittingExpandedSize將其intrinsicContentSize處理得盡可能大
  • 使用widthAnchor / heightAnchor約束來設置視圖的寬度和高度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM