Swift 在Xcode 10/iOS 12中不遵守定位约束

Swift 在Xcode 10/iOS 12中不遵守定位约束,swift,autolayout,Swift,Autolayout,这一切昨天都在Xcode 9和iOS 11下工作;但是,在更新到Xcode 10和iOS 12之后,视图将不再显示。我在一个视图中显示了一个视频。今天我能听到但看不到视频。我检查了这个框架,发现它是零,这就解释了这个问题。但是,与以前的版本相比没有任何变化。我已经删除了视频内容,只是在应用了锚定约束后查看了视图的帧,它们都是零 import UIKit import AVKit class VideoView: UIView { private var videoURL:URL! priva

这一切昨天都在Xcode 9和iOS 11下工作;但是,在更新到Xcode 10和iOS 12之后,视图将不再显示。我在一个视图中显示了一个视频。今天我能听到但看不到视频。我检查了这个框架,发现它是零,这就解释了这个问题。但是,与以前的版本相比没有任何变化。我已经删除了视频内容,只是在应用了锚定约束后查看了视图的帧,它们都是零

import UIKit
import AVKit

class VideoView: UIView {

private var videoURL:URL!
private var parentView:UIView!
private var avPlayer:AVPlayer!
private var avPlayerLayer:AVPlayerLayer!

init(url:URL, parentView:UIView) {
    super.init(frame: .zero)

    self.videoURL = url
    self.parentView = parentView

    setup()
}

private func setup() {
    self.translatesAutoresizingMaskIntoConstraints = false
    self.parentView.addSubview(self)

    self.topAnchor.constraint(equalTo: self.parentView.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
    self.leadingAnchor.constraint(equalTo: self.parentView.leadingAnchor, constant: 8).isActive = true
    self.trailingAnchor.constraint(equalTo: self.parentView.trailingAnchor, constant: -8).isActive = true
    self.heightAnchor.constraint(equalToConstant: 200).isActive = true

    print(self.parentView.frame)
    print(self.frame)
}


override init(frame: CGRect) {
    super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
}
请注意
setup()
末尾的两条打印语句。
parentView
返回
0,0414736
self
视图返回
0,0,0

如果在
Init
中,我设置了帧大小,它将尊重它;但是,它不应用锚定约束,因此视图的大小将保持在我放入init的任何位置

似乎根本没有考虑锚约束。调试器中没有关于它们的错误,正如我们所看到的,
translatesAutoresizingMaskIntoConstraints
设置为
false
,并且所有约束都将
isActive
设置为
true

只有Xcode和iOS版本已更改。我错过了什么

更新1:

如果我创建一个标签并将其添加到
self
,则标签显示良好。如果我为
self
创建一个背景色,该背景色也会显示精细,包括使用锚定约束设置的适当高度。但是,帧仍保持为零。因此,当试图通过将帧设置为
self
的边界来添加
AVPlayerLayer
时,它不起作用,因为
self
当然保持为零。因此,问题仍然是为什么框架的尺寸在初始化后没有改变

更新2:


在应用锚约束之后,我添加了一个
self.layoutifneed()
,这似乎解决了问题。虽然查看
self
的框架,我得到
-199,-100398200
不能说我理解
X和Y的值。尽管如此,所需的
布局似乎已经解决了这个问题,尽管Xcode 10/iOS 12中为什么需要这样做也是个谜

我在第二次更新中发布了答案,但为了清晰起见:

在应用锚约束之后,我添加了一个
self.layoutifneed()
,这似乎解决了问题。虽然查看self的框架,我得到了
-199,-100398200
不能说我理解了
X和Y的值。尽管如此,所需的布局似乎已经解决了这个问题,尽管为什么在Xcode 10/iOS 12中需要这样做也是一个谜