我正在看自动布局库中的一些代码。其中,UIView采用了一个协议:
extension UIView: Constrainable {}
extension UILayoutGuide: Constrainable {
// LayoutGuide doesn't have baseline anchors, so just use the bottom anchor
public var firstBaselineAnchor: NSLayoutYAxisAnchor {
return bottomAnchor
}
public var lastBaselineAnchor: NSLayoutYAxisAnchor {
return bottomAnchor
}
}
public protocol Constrainable {
var topAnchor: NSLayoutYAxisAnchor { get }
var bottomAnchor: NSLayoutYAxisAnchor { get }
var leftAnchor: NSLayoutXAxisAnchor { get }
var rightAnchor: NSLayoutXAxisAnchor { get }
var leadingAnchor: NSLayoutXAxisAnchor { get }
var trailingAnchor: NSLayoutXAxisAnchor { get }
var centerXAnchor: NSLayoutXAxisAnchor { get }
var centerYAnchor: NSLayoutYAxisAnchor { get }
var widthAnchor: NSLayoutDimension { get }
var heightAnchor: NSLayoutDimension { get }
var firstBaselineAnchor : NSLayoutYAxisAnchor { get }
var lastBaselineAnchor : NSLayoutYAxisAnchor { get }
}
一个空虚的{ get }
成就是什么?
这些是采用协议的类必须为其提供吸气剂的属性。该协议未指定有关setter的任何内容,因此类可以提供计算的属性,而不是存储的属性。
例如,采用的类Constrainable
可以topAnchor
通过添加来满足具有的要求
var topAnchor: NSLayoutYAxisAnchor
或通过添加
var topAnchor: NSLayoutYAxisAnchor {
...
return ...
}
问题内容: 为什么以下代码会产生错误? 这个类似问题的答案很有意义。但是,在我的示例中,该属性为get-only。为什么不行呢?是Swift的缺点,还是有一定的道理呢? 问题答案: 没有真正的理由为什么不可能做到这一点,只读属性要求 可以 是协变的,因为从完全合法的类型化的属性返回实例。 Swift暂时不支持。为此,编译器将必须在协议见证表和符合的实现之间生成一个thunk,以执行必要的类型转换。
问题内容: 解释了如何解决创建is 的问题。 本质上,有两种方法: 使用关键字: 使用关键字: 我正在尝试进行一些研究,以了解这两种方法之间的确切区别。该文档非常清楚有关使用: 为了在Objective-C中可访问和使用,Swift类必须是Objective-C类的后代,或者必须将其标记为。 但是,在任何地方我都找不到有关实际操作的信息。详细考虑整个概念,实际上并没有多大意义。我的理解是,这是Sw
我生成了一个JWT,其中有一些我很了解的声明,但是在头中有一个声明叫做< code>kid。有人知道是什么意思吗? 我使用auth0.com生成了令牌
问题内容: twitter引导程序代码具有许多CSS属性,最后带有一个。 例如 怎么办? 更新 我不好说不清楚。我正在使用Bootstrap的SASS部分。 问题答案: 据我所知,Twitter Bootstrap使用LESS。另一方面,!default它实际上是Sass的一部分,用于为Sass变量($var)提供默认值,这将使其在给定的上下文中无效, 即使在Sass中也是如此 。 此外,我!de
问题内容: CSS属性的值是什么意思。CSS属性的值设置为时会发生什么? 问题答案: 所述属性的值根据元素的内容或上下文 自动 调整。 例如,带有的块级元素会随着包含更多文本而变高。再举一个例子,具有的图块元素的左,右边界将增加,直到其沿视口的y轴居中。 实际上,这取决于您将值赋予的属性,不同的属性根据内容和上下文的不同而表现不同。
问题内容: 我有一个pom.xml文件,在该文件中,我看到它们是相同引用的3个依赖项,区别在于标记中 我删除了具有的依赖项,并且仅保留了一个依赖项。我测试了我的应用程序,一切正常。 使用此分类标签的目的是什么?以及为什么我需要重复两次依赖项才能使用添加标记。 问题答案: 分类器区分从相同POM构建但内容不同的工件。它是一些可选的任意字符串,如果存在,则在版本号之后附加到工件名称。 资源