繁体   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