在SwiftUI中,什么';.modifier和.layout之间的区别是什么
我似乎找不到使用.modifier或.layout应用ViewModifier之间的任何区别。它们都产生相同的结果。谁都知道这两者有什么不同。没有任何文件 例如,给定此修饰符:在SwiftUI中,什么';.modifier和.layout之间的区别是什么,swiftui,Swiftui,我似乎找不到使用.modifier或.layout应用ViewModifier之间的任何区别。它们都产生相同的结果。谁都知道这两者有什么不同。没有任何文件 例如,给定此修饰符: struct RedTitle:ViewModifier{ func正文(内容:内容)->某些视图{ 返回内容.foregroundColor(.red).font(.title) } } 这两个视图看起来完全相同: Text(“Hello world!”).layout(RedTitle()) Text(“Hell
struct RedTitle:ViewModifier{
func正文(内容:内容)->某些视图{
返回内容.foregroundColor(.red).font(.title)
}
}
这两个视图看起来完全相同:
Text(“Hello world!”).layout(RedTitle())
Text(“Hello world!”).modifier(RedTitle())
更新
从Xcode 11 beta 4开始,布局
修改器被标记为不推荐使用:
extension View {
@available(*, deprecated, renamed: "modifier")
@inlinable public func layout<T>(_ layout: T) -> some SwiftUI.View where T : SwiftUI.ViewModifier {
return modifier(layout)
}
}
查看该文件,您可以找到func修饰符的声明:
extension View {
public typealias Modified<T> = _ModifiedContent<Self, T> where T : SwiftUI.ViewModifier
@inlinable public func modifier<T>(_ modifier: T) -> Modified<T> where T : SwiftUI.ViewModifier {
return .init(content: self, modifier: modifier)
}
}
由于修改器
和布局
都声明为@inlineable
,因此Swift在.swiftinterface
文件中包含函数体。我们可以看到,layout
只调用modifier
而不做其他事情。问得好。查看Xcode中的定义,它们看起来非常相似。记住这是beta 2版,我们希望他们在通用汽车公司之前澄清或消除一些问题。文档中有很多漏洞。希望你是对的!我会继续使用。修饰语。它在WWDC期间被提到,但布局没有,所以我认为它更能证明未来。
extension View {
public typealias Modified<T> = _ModifiedContent<Self, T> where T : SwiftUI.ViewModifier
@inlinable public func modifier<T>(_ modifier: T) -> Modified<T> where T : SwiftUI.ViewModifier {
return .init(content: self, modifier: modifier)
}
}
extension View {
@inlinable public func layout<T>(_ layout: T) -> Modified<T> where T : SwiftUI.ViewModifier {
return modifier(layout)
}
}