Skip to content

Commit 1bc6018

Browse files
committed
QMUIPopupContainerView,当上下或者左右没有足够的空间时,不能直接改变maximumHeight或者maximumWidth,不然当有足够的空间时,会因maximumHeight/maximumWidth计算错误
1 parent 5722070 commit 1bc6018

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

QMUIKit/QMUIComponents/QMUIPopupContainerView.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ typedef NS_ENUM(NSUInteger, QMUIPopupContainerViewLayoutAlignment) {
110110
/// 最小宽度(指整个控件的宽度,而不是contentView部分),默认为0
111111
@property(nonatomic, assign) CGFloat minimumWidth UI_APPEARANCE_SELECTOR;
112112

113-
/// 最大高度(指整个控件的高度,而不是contentView部分),默认为CGFLOAT_MAX,会在布局时被动态修改。
113+
/// 最大高度(指整个控件的高度,而不是contentView部分),默认为CGFLOAT_MAX
114114
@property(nonatomic, assign) CGFloat maximumHeight UI_APPEARANCE_SELECTOR;
115115

116116
/// 最小高度(指整个控件的高度,而不是contentView部分),默认为0

QMUIKit/QMUIComponents/QMUIPopupContainerView.m

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -531,11 +531,11 @@ - (void)layoutWithTargetRect:(CGRect)targetRect {
531531
// 上下都没有足够的空间,所以要调整maximumHeight
532532
CGFloat maximumHeightAbove = CGRectGetMinY(targetRect) - CGRectGetMinY(containerRect) - self.distanceBetweenSource - self.safetyMarginsAvoidSafeAreaInsets.top;
533533
CGFloat maximumHeightBelow = CGRectGetMaxY(containerRect) - self.safetyMarginsAvoidSafeAreaInsets.bottom - self.distanceBetweenSource - CGRectGetMaxY(targetRect);
534-
self.maximumHeight = MAX(self.minimumHeight, MAX(maximumHeightAbove, maximumHeightBelow));
535-
tipSize.height = self.maximumHeight;
534+
CGFloat maximumHeight = MAX(self.minimumHeight, MAX(maximumHeightAbove, maximumHeightBelow));
535+
tipSize.height = maximumHeight;
536536
_currentLayoutDirection = maximumHeightAbove > maximumHeightBelow ? QMUIPopupContainerViewLayoutDirectionAbove : QMUIPopupContainerViewLayoutDirectionBelow;
537537

538-
QMUILog(NSStringFromClass(self.class), @"%@, 因为上下都不够空间,所以最大高度被强制改为%@, 位于目标的%@", self, @(self.maximumHeight), maximumHeightAbove > maximumHeightBelow ? @"上方" : @"下方");
538+
QMUILog(NSStringFromClass(self.class), @"%@, 因为上下都不够空间,所以最大高度被强制改为%@, 位于目标的%@", self, @(maximumHeight), maximumHeightAbove > maximumHeightBelow ? @"上方" : @"下方");
539539

540540
} else if (_currentLayoutDirection == QMUIPopupContainerViewLayoutDirectionAbove && !canShowAtAbove) {
541541
_currentLayoutDirection = QMUIPopupContainerViewLayoutDirectionBelow;
@@ -599,11 +599,11 @@ - (void)layoutWithTargetRect:(CGRect)targetRect {
599599
// 左右都没有足够的空间,所以要调整maximumWidth
600600
CGFloat maximumWidthLeft = CGRectGetMinX(targetRect) - CGRectGetMinX(containerRect) - self.distanceBetweenSource - self.safetyMarginsAvoidSafeAreaInsets.left;
601601
CGFloat maximumWidthRight = CGRectGetMaxX(containerRect) - self.safetyMarginsAvoidSafeAreaInsets.right - self.distanceBetweenSource - CGRectGetMaxX(targetRect);
602-
self.maximumWidth = MAX(self.minimumWidth, MAX(maximumWidthLeft, maximumWidthRight));
603-
tipSize.width = self.maximumWidth;
602+
CGFloat maximumWidth = MAX(self.minimumWidth, MAX(maximumWidthLeft, maximumWidthRight));
603+
tipSize.width = maximumWidth;
604604
_currentLayoutDirection = maximumWidthLeft > maximumWidthRight ? QMUIPopupContainerViewLayoutDirectionLeft : QMUIPopupContainerViewLayoutDirectionRight;
605605

606-
QMUILog(NSStringFromClass(self.class), @"%@, 因为左右都不够空间,所以最大宽度被强制改为%@, 位于目标的%@", self, @(self.maximumWidth), maximumWidthLeft > maximumWidthRight ? @"左边" : @"右边");
606+
QMUILog(NSStringFromClass(self.class), @"%@, 因为左右都不够空间,所以最大宽度被强制改为%@, 位于目标的%@", self, @(maximumWidth), maximumWidthLeft > maximumWidthRight ? @"左边" : @"右边");
607607

608608
} else if (_currentLayoutDirection == QMUIPopupContainerViewLayoutDirectionLeft && !canShowAtLeft) {
609609
_currentLayoutDirection = QMUIPopupContainerViewLayoutDirectionLeft;

0 commit comments

Comments
 (0)