@@ -51,32 +51,34 @@ -(void)calcSubView:(UIView*)sbv pRect:(CGRect*)pRect inSize:(CGSize)selfSize
51
51
MyMarginGravity vert = gravity & MyMarginGravity_Horz_Mask;
52
52
MyMarginGravity horz = gravity & MyMarginGravity_Vert_Mask;
53
53
54
+ MyLayoutSize *sbvWidthDime = sbv.widthDime ;
55
+ MyLayoutSize *sbvHeightDime = sbv.heightDime ;
54
56
55
57
// 优先用设定的宽度尺寸。
56
- if (sbv. widthDime .dimeNumVal != nil )
57
- pRect->size .width = sbv. widthDime .measure ;
58
+ if (sbvWidthDime .dimeNumVal != nil )
59
+ pRect->size .width = sbvWidthDime .measure ;
58
60
59
- if (sbv. heightDime .dimeNumVal != nil )
60
- pRect->size .height = sbv. heightDime .measure ;
61
+ if (sbvHeightDime .dimeNumVal != nil )
62
+ pRect->size .height = sbvHeightDime .measure ;
61
63
62
- if (sbv. widthDime . dimeRelaVal != nil && sbv. widthDime .dimeRelaVal .view != sbv)
64
+ if (sbvWidthDime. dimeRelaVal != nil && sbvWidthDime .dimeRelaVal .view != sbv)
63
65
{
64
- if (sbv. widthDime .dimeRelaVal .view == self)
65
- pRect->size .width = (selfSize.width - self.leftPadding - self.rightPadding ) * sbv. widthDime . mutilVal + sbv. widthDime . addVal ;
66
+ if (sbvWidthDime .dimeRelaVal .view == self)
67
+ pRect->size .width = [sbvWidthDime measureWith: (selfSize.width - self .leftPadding - self .rightPadding)] ;
66
68
else
67
- pRect->size .width = sbv. widthDime . dimeRelaVal .view .estimatedRect .size .width * sbv. widthDime . mutilVal + sbv. widthDime . addVal ;
69
+ pRect->size .width = [sbvWidthDime measureWith: sbvWidthDime. dimeRelaVal.view.estimatedRect.size.width] ;
68
70
}
69
71
70
- if (sbv. heightDime . dimeRelaVal != nil && sbv. heightDime .dimeRelaVal .view != sbv)
72
+ if (sbvHeightDime. dimeRelaVal != nil && sbvHeightDime .dimeRelaVal .view != sbv)
71
73
{
72
- if (sbv. heightDime .dimeRelaVal .view == self)
73
- pRect->size .height = (selfSize.height - self.topPadding - self.bottomPadding ) * sbv. heightDime . mutilVal + sbv. heightDime . addVal ;
74
+ if (sbvHeightDime .dimeRelaVal .view == self)
75
+ pRect->size .height = [sbvHeightDime measureWith: (selfSize.height - self .topPadding - self .bottomPadding)] ;
74
76
else
75
- pRect->size .height = sbv. heightDime . dimeRelaVal .view .estimatedRect .size .height * sbv. heightDime . mutilVal + sbv. heightDime . addVal ;
77
+ pRect->size .height = [sbvHeightDime measureWith: sbvHeightDime. dimeRelaVal.view.estimatedRect.size.height] ;
76
78
77
79
}
78
80
79
- pRect->size .width = [self validMeasure: sbv.widthDime sbv: sbv calcSize: pRect->size.width sbvSize: pRect->size selfLayoutSize: selfSize];
81
+ pRect->size .width = [self validMeasure: sbvWidthDime sbv: sbv calcSize: pRect->size.width sbvSize: pRect->size selfLayoutSize: selfSize];
80
82
81
83
82
84
// 特殊处理如果设置了左右边距则确定了视图的宽度
@@ -93,33 +95,33 @@ -(void)calcSubView:(UIView*)sbv pRect:(CGRect*)pRect inSize:(CGSize)selfSize
93
95
94
96
}
95
97
96
- pRect->size .height = [self validMeasure: sbv.heightDime sbv: sbv calcSize: pRect->size.height sbvSize: pRect->size selfLayoutSize: selfSize];
98
+ pRect->size .height = [self validMeasure: sbvHeightDime sbv: sbv calcSize: pRect->size.height sbvSize: pRect->size selfLayoutSize: selfSize];
97
99
98
100
if (sbv.topPos .posVal != nil && sbv.bottomPos .posVal != nil )
99
101
vert = MyMarginGravity_Vert_Fill;
100
102
101
103
[self vertGravity: vert selfSize: selfSize sbv: sbv rect: pRect];
102
104
103
105
104
- if (sbv. widthDime . dimeRelaVal != nil && sbv. widthDime . dimeRelaVal .view == sbv && sbv. widthDime .dimeRelaVal .dime == MyMarginGravity_Vert_Fill)
106
+ if (sbvWidthDime. dimeRelaVal != nil && sbvWidthDime. dimeRelaVal .view == sbv && sbvWidthDime .dimeRelaVal .dime == MyMarginGravity_Vert_Fill)
105
107
{
106
-
107
- pRect->size .width = [self validMeasure: sbv.widthDime sbv: sbv calcSize: pRect->size.height * sbv.widthDime.mutilVal + sbv.widthDime.addVal sbvSize: pRect->size selfLayoutSize: selfSize];
108
+ pRect-> size . width = [sbvWidthDime measureWith: pRect->size.height];
109
+ pRect->size .width = [self validMeasure: sbvWidthDime sbv: sbv calcSize: pRect->size.width sbvSize: pRect->size selfLayoutSize: selfSize];
108
110
109
111
[self horzGravity: horz selfSize: selfSize sbv: sbv rect: pRect];
110
112
111
113
}
112
114
113
- if (sbv. heightDime . dimeRelaVal != nil && sbv. heightDime . dimeRelaVal .view == sbv && sbv. heightDime .dimeRelaVal .dime == MyMarginGravity_Horz_Fill)
115
+ if (sbvHeightDime. dimeRelaVal != nil && sbvHeightDime. dimeRelaVal .view == sbv && sbvHeightDime .dimeRelaVal .dime == MyMarginGravity_Horz_Fill)
114
116
{
115
- pRect->size .height = pRect->size .width * sbv. heightDime . mutilVal + sbv. heightDime . addVal ;
117
+ pRect->size .height = [sbvHeightDime measureWith: pRect->size.width] ;
116
118
117
119
if (sbv.isFlexedHeight )
118
120
{
119
121
pRect->size .height = [self heightFromFlexedHeightView: sbv inWidth: pRect->size.width];
120
122
}
121
123
122
- pRect->size .height = [self validMeasure: sbv.heightDime sbv: sbv calcSize: pRect->size.height sbvSize: pRect->size selfLayoutSize: selfSize];
124
+ pRect->size .height = [self validMeasure: sbvHeightDime sbv: sbv calcSize: pRect->size.height sbvSize: pRect->size selfLayoutSize: selfSize];
123
125
124
126
[self vertGravity: vert selfSize: selfSize sbv: sbv rect: pRect];
125
127
@@ -133,7 +135,6 @@ -(void)calcSubView:(UIView*)sbv pRect:(CGRect*)pRect inSize:(CGSize)selfSize
133
135
134
136
-(CGSize )calcLayoutRect : (CGSize )size isEstimate : (BOOL )isEstimate pHasSubLayout : (BOOL *)pHasSubLayout sizeClass : (MySizeClass)sizeClass
135
137
{
136
-
137
138
CGSize selfSize = [super calcLayoutRect: size isEstimate: isEstimate pHasSubLayout: pHasSubLayout sizeClass: sizeClass];
138
139
CGFloat maxWidth = self.leftPadding ;
139
140
CGFloat maxHeight = self.topPadding ;
@@ -222,7 +223,7 @@ -(CGSize)calcLayoutRect:(CGSize)size isEstimate:(BOOL)isEstimate pHasSubLayout:(
222
223
223
224
}
224
225
}
225
-
226
+
226
227
return selfSize;
227
228
228
229
}
0 commit comments