我尝试使用
HStack
创建自定义 Layout
。如果用户不提供自定义间距,我希望有类似的语法,如 HStack
并使用相同的间距。但我找不到:HStackLayout
的默认间距是多少?
我尝试提供一些代码或额外信息:
这是苹果的定义:
@frozen public struct HStackLayout : Layout {
/// The vertical alignment of subviews.
public var alignment: VerticalAlignment
/// The distance between adjacent subviews.
///
/// Set this value to `nil` to use default distances between subviews.
public var spacing: CGFloat?
...
我想知道,如果您不提供自定义值,间距有什么用。
HStack
的自动间距使用视图自己在其他视图之间的首选间距。您可以使用 LayoutSubview.spacing
属性访问它。
示例:
func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) {
// suppose you want to find the default horizontal spacing between these two views:
let view1 = subviews[0]
let view2 = subviews[1]
let spacing = view1.spacing.distance(to: view2.spacing, along: .horizontal)
}
请注意,此间距有所不同,具体取决于两个视图的类型。每种视图都有自己相对于其他视图的首选间距。