iOS: change logic weight caculating to align android
This commit is contained in:
parent
c7e6f93955
commit
5224df5369
@ -100,6 +100,14 @@ - (instancetype)init {
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)setMeasuredWidth:(CGFloat)measuredWidth {
|
||||||
|
_measuredWidth = MAX(0, measuredWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setMeasuredHeight:(CGFloat)measuredHeight {
|
||||||
|
_measuredHeight = MAX(0, measuredHeight);
|
||||||
|
}
|
||||||
|
|
||||||
- (void)apply:(CGSize)frameSize {
|
- (void)apply:(CGSize)frameSize {
|
||||||
self.resolved = NO;
|
self.resolved = NO;
|
||||||
[self measure:frameSize];
|
[self measure:frameSize];
|
||||||
@ -344,11 +352,14 @@ - (void)measureVLayoutContent:(CGSize)targetSize {
|
|||||||
if (contentWeight > 0) {
|
if (contentWeight > 0) {
|
||||||
CGFloat remaining = targetSize.height - contentHeight;
|
CGFloat remaining = targetSize.height - contentHeight;
|
||||||
contentWidth = 0;
|
contentWidth = 0;
|
||||||
|
contentHeight = 0;
|
||||||
|
had = NO;
|
||||||
for (__kindof UIView *subview in self.view.subviews) {
|
for (__kindof UIView *subview in self.view.subviews) {
|
||||||
DoricLayout *layout = subview.doricLayout;
|
DoricLayout *layout = subview.doricLayout;
|
||||||
if (layout.disabled) {
|
if (layout.disabled) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
had = YES;
|
||||||
CGFloat measuredHeight = layout.measuredHeight + remaining / contentWeight * layout.weight;
|
CGFloat measuredHeight = layout.measuredHeight + remaining / contentWeight * layout.weight;
|
||||||
layout.measuredHeight = measuredHeight;
|
layout.measuredHeight = measuredHeight;
|
||||||
//Need Remeasure
|
//Need Remeasure
|
||||||
@ -357,8 +368,11 @@ - (void)measureVLayoutContent:(CGSize)targetSize {
|
|||||||
measuredHeight - layout.paddingTop - layout.paddingBottom)];
|
measuredHeight - layout.paddingTop - layout.paddingBottom)];
|
||||||
layout.measuredHeight = measuredHeight;
|
layout.measuredHeight = measuredHeight;
|
||||||
contentWidth = MAX(contentWidth, layout.takenWidth);
|
contentWidth = MAX(contentWidth, layout.takenWidth);
|
||||||
|
contentHeight += layout.takenHeight + self.spacing;
|
||||||
|
}
|
||||||
|
if (had) {
|
||||||
|
contentHeight -= self.spacing;
|
||||||
}
|
}
|
||||||
contentHeight = targetSize.height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.widthSpec == DoricLayoutFit) {
|
if (self.widthSpec == DoricLayoutFit) {
|
||||||
@ -395,12 +409,15 @@ - (void)measureHLayoutContent:(CGSize)targetSize {
|
|||||||
|
|
||||||
if (contentWeight > 0) {
|
if (contentWeight > 0) {
|
||||||
CGFloat remaining = targetSize.width - contentWidth;
|
CGFloat remaining = targetSize.width - contentWidth;
|
||||||
|
contentWidth = 0;
|
||||||
contentHeight = 0;
|
contentHeight = 0;
|
||||||
|
had = NO;
|
||||||
for (__kindof UIView *subview in self.view.subviews) {
|
for (__kindof UIView *subview in self.view.subviews) {
|
||||||
DoricLayout *layout = subview.doricLayout;
|
DoricLayout *layout = subview.doricLayout;
|
||||||
if (layout.disabled) {
|
if (layout.disabled) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
had = YES;
|
||||||
CGFloat measuredWidth = layout.measuredWidth + remaining / contentWeight * layout.weight;
|
CGFloat measuredWidth = layout.measuredWidth + remaining / contentWeight * layout.weight;
|
||||||
layout.measuredWidth = measuredWidth;
|
layout.measuredWidth = measuredWidth;
|
||||||
//Need Remeasure
|
//Need Remeasure
|
||||||
@ -408,9 +425,12 @@ - (void)measureHLayoutContent:(CGSize)targetSize {
|
|||||||
measuredWidth - layout.paddingLeft - layout.paddingRight,
|
measuredWidth - layout.paddingLeft - layout.paddingRight,
|
||||||
layout.measuredHeight - layout.paddingTop - layout.paddingBottom)];
|
layout.measuredHeight - layout.paddingTop - layout.paddingBottom)];
|
||||||
layout.measuredWidth = measuredWidth;
|
layout.measuredWidth = measuredWidth;
|
||||||
|
contentWidth += layout.takenWidth + self.spacing;
|
||||||
contentHeight = MAX(contentHeight, layout.takenHeight);
|
contentHeight = MAX(contentHeight, layout.takenHeight);
|
||||||
}
|
}
|
||||||
contentWidth = targetSize.width;
|
if (had) {
|
||||||
|
contentWidth -= self.spacing;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.widthSpec == DoricLayoutFit) {
|
if (self.widthSpec == DoricLayoutFit) {
|
||||||
|
Reference in New Issue
Block a user