Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.05k stars 1.37k forks source link

QMUIPopupContainerView 会出现箭头位置偏离浮层的情况 #1500

Closed huiyumiao closed 1 year ago

huiyumiao commented 1 year ago

如果sourceRect 的中心位置太靠左或太靠右会出现如图的情况

WX20230615-165855

查看源码发现没有对 _arrowMinX 做限制

WX20230615-170105

我暂时做了如下处理,箭头在左右的也有这个问题

_arrowMinX = MIN(MAX(selfMidX - self.arrowSizeAuto.width / 2, self.cornerRadius), CGRectGetWidth(self.frame) - self.cornerRadius - self.arrowSizeAuto.width);
MoLice commented 1 year ago

这个从代码设计的角度是不可避免的,你给的 rect 太过于靠近边缘,始终都会有这样的情况出现。此时组件也没办法帮你做什么自动的调整,把箭头往左边挪一点?但如果你给我的 rect.size.width 很小比如2、3呢?那我往左边挪了,箭头就没对准你的 rect 了,那又是另一个问题。

所以只能靠业务自己保证 rect 不要太偏。