UIStackViewのspacing
UIStackViewのspacingは一度値を入れるとずっとその幅でレイアウトされます。
これを一つのstackViewで、viewとviewの間ごとに空白の幅を指定できるようにします。
手順
1. sizeだけを持つUIViewのカスタムクラスを作る
以下をコピペ
import UIKit
final class SpacerView: UIView {
private let space: CGFloat
init(_ space: CGFloat) {
self.space = space
super.init(frame: .zero)
}
override var intrinsicContentSize: CGSize {
return .init(width: space, height: space)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
2. 使う
.spacingの指定はせず、SpacerViewのinitializerからサイズの指定をする
let stackView = UIStackView(arrangedSubviews: [
view, SpacerView(5), view, SpacerView(10), view, SpacerView(20), view
])