Overlay and Background
覆盖和背景修饰符也是布局系统的重要组成部分。当我们编写content.overlay(other)时,系统会创建一个带有两个子元素的overlay修饰符:content和other
布置overlay修改器后,建议的尺寸将传递给内容。然后,将内容报告的大小作为建议大小传递给其他人。 overlay修改器将内容的大小作为其自身大小报告回去;换句话说,其他的报告大小将被忽略。布局的实现如下所示:
extension Overlay {
func layout(in proposedSize: ProposedSize) -> CGSize {
let backgroundSize = background.layout(proposedSize: proposedSize) _ = foreground.layout(proposedSize: ProposedSize(
width: backgroundSize.width, height: backgroundSize.height))
// ...
return backgroundSize }
}
对于content.background(other),其过程几乎相同,除了现在在内容后面绘制了other。请务必注意,content.overlay(other)是不同的与other.background(cont