Skip to content

Commit 3399b55

Browse files
committed
Update
1 parent 34f0f5f commit 3399b55

File tree

9 files changed

+33
-115
lines changed

9 files changed

+33
-115
lines changed

Sources/StackKit/HStackView.swift

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ open class HStackView: UIView, StackView {
1818
self.distribution = distribution
1919
self.padding = padding
2020

21-
for v in content() {
22-
addSubview(v)
23-
}
21+
addContent(content)
2422
}
2523

2624
public required init?(coder: NSCoder) {
@@ -35,15 +33,11 @@ open class HStackView: UIView, StackView {
3533

3634
public func resetContent(@_StackKitHStackContentResultBuilder _ content: () -> [UIView]) {
3735
subviews.forEach { $0.removeFromSuperview() }
38-
for v in content() {
39-
addSubview(v)
40-
}
36+
addContent(content)
4137
}
4238

4339
open override func didAddSubview(_ subview: UIView) {
4440
super.didAddSubview(subview)
45-
46-
subview._tryFixSize()
4741

4842
// keep spacers between views and spacers have only one spacer
4943
guard (subview as? SpacerView) != nil,
@@ -105,35 +99,24 @@ open class HStackView: UIView, StackView {
10599

106100
makeSubviewsAlignment()
107101

102+
fillDivider()
103+
fillSpecifySpacer()
104+
fillSpacer()
105+
108106
switch distribution {
109107
case .spacing(let spacing):
110-
fillDivider()
111-
fillSpecifySpacer()
112-
fillSpacer()
113-
114108
makeSpacing(spacing)
115109

116110
case .autoSpacing:
117-
fillDivider()
118-
fillSpecifySpacer()
119-
fillSpacer()
120-
121111
let spacing = autoSpacing()
122112
makeSpacing(spacing)
123113

124114
case .fillHeight(let spacing):
125-
fillDivider()
126-
fillSpecifySpacer()
127-
fillSpacer()
128-
129115
let spacing = spacing ?? autoSpacing()
130116
makeSpacing(spacing)
131117
fillHeight()
132118

133119
case .fill:
134-
fillDivider()
135-
fillSpecifySpacer()
136-
fillSpacer()
137120
fillWidth()
138121
makeSpacing(0)
139122
fillHeight()

Sources/StackKit/Layer/HStackLayer.swift

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ open class HStackLayer: CALayer, StackLayer {
3030
self.distribution = distribution
3131
self.padding = padding
3232

33-
for l in content() {
34-
addSublayer(l)
35-
}
33+
addContent(content)
3634
}
3735

3836
public func addContent(@_StackKitHStackLayerContentResultBuilder _ content: () -> [CALayer]) {
@@ -43,9 +41,7 @@ open class HStackLayer: CALayer, StackLayer {
4341

4442
public func resetContent(@_StackKitHStackLayerContentResultBuilder _ content: () -> [CALayer]) {
4543
sublayers?.forEach { $0.removeFromSuperlayer() }
46-
for v in content() {
47-
addSublayer(v)
48-
}
44+
addContent(content)
4945
}
5046

5147
public var contentSize: CGSize {
@@ -88,35 +84,24 @@ open class HStackLayer: CALayer, StackLayer {
8884

8985
makeSublayersAlignment()
9086

87+
fillDivider()
88+
fillSpecifySpacer()
89+
fillSpacer()
90+
9191
switch distribution {
9292
case .spacing(let spacing):
93-
fillDivider()
94-
fillSpecifySpacer()
95-
fillSpacer()
96-
9793
makeSpacing(spacing)
9894

9995
case .autoSpacing:
100-
fillDivider()
101-
fillSpecifySpacer()
102-
fillSpacer()
103-
10496
let spacing = autoSpacing()
10597
makeSpacing(spacing)
10698

107-
case .fillHeight(let spacing): // autoSpacing and fill height
108-
fillDivider()
109-
fillSpecifySpacer()
110-
fillSpacer()
111-
99+
case .fillHeight(let spacing):
112100
let spacing = spacing ?? autoSpacing()
113101
makeSpacing(spacing)
114102
fillHeight()
115103

116104
case .fill:
117-
fillDivider()
118-
fillSpecifySpacer()
119-
fillSpacer()
120105
fillWidth()
121106
makeSpacing(0)
122107
fillHeight()

Sources/StackKit/Layer/HStackLayerWrapperView.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ open class HStackLayerWrapperView: _StackLayerWrapperView {
2828
hStackLayer.distribution = distribution
2929
hStackLayer.padding = padding
3030

31-
for v in content() {
32-
addSubview(v)
33-
}
31+
addContent(content)
3432
}
3533

3634
public required init?(coder: NSCoder) {

Sources/StackKit/Layer/VStackLayer.swift

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ open class VStackLayer: CALayer, StackLayer {
3030
self.distribution = distribution
3131
self.padding = padding
3232

33-
for l in content() {
34-
addSublayer(l)
35-
}
33+
addContent(content)
3634
}
3735

3836
public func addContent(@_StackKitVStackLayerContentResultBuilder _ content: () -> [CALayer]) {
@@ -43,9 +41,7 @@ open class VStackLayer: CALayer, StackLayer {
4341

4442
public func resetContent(@_StackKitVStackLayerContentResultBuilder _ content: () -> [CALayer]) {
4543
sublayers?.forEach { $0.removeFromSuperlayer() }
46-
for v in content() {
47-
addSublayer(v)
48-
}
44+
addContent(content)
4945
}
5046

5147
public var contentSize: CGSize {
@@ -89,35 +85,24 @@ open class VStackLayer: CALayer, StackLayer {
8985

9086
makeSublayersAlignment()
9187

88+
fillDivider()
89+
fillSpecifySpacer()
90+
fillSpacer()
91+
9292
switch distribution {
9393
case .spacing(let spacing):
94-
fillDivider()
95-
fillSpecifySpacer()
96-
fillSpacer()
97-
9894
makeSpacing(spacing)
9995

10096
case .autoSpacing:
101-
fillDivider()
102-
fillSpecifySpacer()
103-
fillSpacer()
104-
10597
let spacing = autoSpacing()
10698
makeSpacing(spacing)
10799

108100
case .fillWidth(let spacing):
109-
fillDivider()
110-
fillSpecifySpacer()
111-
fillSpacer()
112-
113101
let spacing = spacing ?? autoSpacing()
114102
makeSpacing(spacing)
115103
fillWidth()
116104

117105
case .fill:
118-
fillDivider()
119-
fillSpecifySpacer()
120-
fillSpacer()
121106
fillHeight()
122107
makeSpacing(0)
123108
fillWidth()

Sources/StackKit/Layer/VStackLayerWrapperView.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ open class VStackLayerWrapperView: _StackLayerWrapperView {
2828
vStackLayer.distribution = distribution
2929
vStackLayer.padding = padding
3030

31-
for v in content() {
32-
addSubview(v)
33-
}
31+
addContent(content)
3432
}
3533

3634
public required init?(coder: NSCoder) {

Sources/StackKit/UIView+StackKit/UIView+Effective.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,6 @@ extension UIView {
99
var _isEffectiveView: Bool {
1010
!_isIneffectiveView
1111
}
12-
13-
func _tryFixSize() {
14-
guard frame.size == .zero else { return }
15-
sizeToFit()
16-
}
1712
}
1813

1914
extension CALayer {

Sources/StackKit/UIView+StackKit/UIView+FitSize.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@ var _StackKit_FitTypeKey = "_StackKit_FitTypeKey"
55
public enum FitType {
66
case content
77

8+
/// **Adjust the view’s height** based on the reference width.
89
case width
10+
11+
/// **Adjust the view’s width** based on the reference height.
912
case height
1013

1114
/// Set fixed height, width auto calculate
1215
case widthFlexible
16+
1317
/// Set fixed width, height auto calculate
1418
case heightFlexible
1519

@@ -80,8 +84,8 @@ extension UIView: FitSize {
8084
}
8185

8286
case .content:
83-
fitWidth = size.width ?? bounds.width
84-
fitHeight = size.height ?? bounds.height
87+
fitWidth = size.width ?? _stackKit_maxWidth ?? bounds.width
88+
fitHeight = size.height ?? _stackKit_maxHeight ?? bounds.height
8589
}
8690

8791
fitWidth = _validateValue(fitWidth)

Sources/StackKit/VStackView.swift

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ open class VStackView: UIView, StackView {
1818
self.distribution = distribution
1919
self.padding = padding
2020

21-
for v in content() {
22-
addSubview(v)
23-
}
21+
addContent(content)
2422
}
2523

2624
public required init?(coder: NSCoder) {
@@ -35,16 +33,12 @@ open class VStackView: UIView, StackView {
3533

3634
public func resetContent(@_StackKitVStackContentResultBuilder _ content: () -> [UIView]) {
3735
subviews.forEach { $0.removeFromSuperview() }
38-
for v in content() {
39-
addSubview(v)
40-
}
36+
addContent(content)
4137
}
4238

4339
open override func didAddSubview(_ subview: UIView) {
4440
super.didAddSubview(subview)
4541

46-
subview._tryFixSize()
47-
4842
// keep spacers between views and spacers have only one spacer
4943
guard (subview as? SpacerView) != nil,
5044
let index = subviews.firstIndex(where: { $0 == subview })
@@ -105,35 +99,24 @@ open class VStackView: UIView, StackView {
10599

106100
makeSubviewsAlignment()
107101

102+
fillDivider()
103+
fillSpecifySpacer()
104+
fillSpacer()
105+
108106
switch distribution {
109107
case .spacing(let spacing):
110-
fillDivider()
111-
fillSpecifySpacer()
112-
fillSpacer()
113-
114108
makeSpacing(spacing)
115109

116110
case .autoSpacing:
117-
fillDivider()
118-
fillSpecifySpacer()
119-
fillSpacer()
120-
121111
let spacing = autoSpacing()
122112
makeSpacing(spacing)
123113

124114
case .fillWidth(let spacing):
125-
fillDivider()
126-
fillSpecifySpacer()
127-
fillSpacer()
128-
129115
let spacing = spacing ?? autoSpacing()
130116
makeSpacing(spacing)
131117
fillWidth()
132118

133119
case .fill:
134-
fillDivider()
135-
fillSpecifySpacer()
136-
fillSpacer()
137120
fillHeight()
138121
makeSpacing(0)
139122
fillWidth()

Sources/StackKit/WrapStackView.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,6 @@ open class WrapStackView: UIView {
5353
subviews.filter { $0._isEffectiveView }
5454
}
5555

56-
open override func addSubview(_ view: UIView) {
57-
if let lastViewFrame = effectiveSubviews.last?.frame {
58-
view.frame.origin = lastViewFrame.origin
59-
}
60-
super.addSubview(view)
61-
}
62-
63-
open override func didAddSubview(_ subview: UIView) {
64-
super.didAddSubview(subview)
65-
66-
subview._tryFixSize()
67-
}
68-
6956
private class Attribute: Equatable {
7057
var section: Int // 第几行
7158
var subviews: [UIView] = []

0 commit comments

Comments
 (0)