作为一个初学者,我试图学习一本辅助教程,同时学习正确浏览Apple的API文档。在遵循有关程序约束的示例时,我遇到了以下方法:

let leadingConstraint = segmentedControl.leadingAnchor.constraint(equalTo: <NSLayoutAnchor<NSLayoutXAxisAnchor>)


我了解到尖括号表示通用。但是,这是苹果在这种情况下使用尖括号所暗示的意思吗?在NSLayoutAnchor上搜索文档时,找不到类似于以下代码的“ topAnchor”:

let topConstraint = segmentedControl.topAnchor.constraint(equalTo: view.topAnchor)


我如何找出泛型称为“ AnchorType”的选择?还是我看错了上下文?

先感谢您。

最佳答案

您提供的第一个示例是无效的代码(其中一个缺少平衡的尖括号)。但是,我认为我理解它可能试图解释的内容。

Apple的NSLayoutXAxisAnchor文档(请参阅https://developer.apple.com/documentation/uikit/nslayoutxaxisanchor)与您的第二个示例类似。

在本文中,文档说明锚点的类型需要匹配。在行中

cancelButton.leadingAnchor.constraintEqualToAnchor(saveButton.trailingAnchor, constant: 8.0).active = true


leadingAnchortrailingAnchor都是X轴锚点,并且代码良好。

在第二个例子中

cancelButton.leadingAnchor.constraintEqualToAnchor(saveButton.topAnchor, constant: 8.0).active = true


topAnchor是Y轴锚点,因此会生成警告。

NSLayoutXAxisAnchor是从NSLayoutAnchor派生的,因此,我认为您给出的第一个示例是试图弄清楚参数必须是实际上是NSLayoutAnchorNSLayoutXAxisAnchor的想法。

NSLayoutAnchor(请参阅https://developer.apple.com/documentation/uikit/nslayoutanchor)的文档提供了以下可能性:


NSLayoutXAxisAnchor
NSLayoutYAxisAnchor
NSLayoutDimension

10-08 16:44