【问题标题】:How to get height of topLayoutGuide?如何获取 topLayoutGuide 的高度?
【发布时间】:2019-12-13 17:22:39
【问题描述】:
 moviePlayer = MPMoviePlayerController(contentURL: url)
 moviePlayer.view.frame = CGRect(x: 0, y:{layoutguide.height}, width:
 self.view.frame.width, height: 300)
 self.view.addSubview(moviePlayer.view)

viewcontroller 有一个名为“topLayoutGuide”的属性,但似乎不是我想要的。

我知道如何在故事板中实现,在代码中,我无法获得顶部布局指南的高度。我搜索了几个小时一无所获。

下面是想要的。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以将 topLayoutGuide 值作为其length 属性:

    // Inside your viewController
    self.topLayoutGuide.length
    

    因为它是一个单一的值(即:它没有高度和宽度),他们只是将其称为length。 bottomLayoutGuide 也是如此。

    希望对你有帮助

    还有一件事要提到,在这个属性的苹果文档中:

    // 作为不使用自动布局时的礼貌,这个值可以安全地在-viewDidLayoutSubviews中引用,或者在调用super之后在-layoutSubviews中引用

    在这两个函数中使用这个属性可以获得准确的值,因为布局已经初始化。如果你在viewDidLoad函数中使用它,这个属性将为0。

    【讨论】:

    • 当你要求这个值时要注意。当然,当布局改变时它可能会改变。
    • self.topLayoutGuide.length 始终为 0.0
    • 你什么时候要的?可能在viewDidLoad 中,您将获得 0.0,因为尚未完成任何布局。在“viewDidAppear”上,您可能会得到不同的值。
    • 另外,viewDidLayoutSubviews 是自动布局完成它对当前视图控制器的工作的时刻。
    • topLayoutGuide 现在已在 iOS 11 中弃用
    【解决方案2】:

    如果有人正在寻找如何计算适用于 iOS 11 的 SafeLayoutGuide 的插入高度,因为现在不推荐使用顶部和底部布局指南,您可以在以下位置找到它:

    view.safeAreaInsets
    

    请注意,顶部和底部布局指南是 ViewController 的一部分,现在 SafeLayoutGuide 是 ViewController 主视图的一部分。

    【讨论】:

    • 顶部和底部布局指南仍然是 ViewControllers 的一部分。
    • @CoderNinja 是的,我没有说它们不是,我说它们在 iOS 11 中已被弃用。也许我的最后一句话令人困惑,所以我编辑了它。
    【解决方案3】:

    这将获取视图控制器的 view 部分的长度(以磅为单位),该部分被半透明或透明的 UIKit 条覆盖。

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        let topSpace:CGFloat
        let bottomSpace:CGFloat
        if #available(iOS 11.0, *) {
            topSpace = self.view.safeAreaInsets.top
            bottomSpace = self.view.safeAreaInsets.bottom
        } else {
            topSpace = self.topLayoutGuide.length
            bottomSpace = self.bottomLayoutGuide.length
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-08
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2014-05-01
      • 2011-10-06
      • 2013-01-03
      • 1970-01-01
      相关资源
      最近更新 更多