MKMapView.showsUserLocation 可能触发了 UIView.setNeedsLayout

今天遇到一个BUG:

新建一个MKMapView,并设置showsUserLocation=true,此时由于还没有获取到用户的位置,所以MKMapView还没有发生任何变化。

此时在view上还有一个subview,该subview上也有一些constriants,显示在正常位置。通过用户点击按钮,通过UIView动画对该subview进行位移,该subview的响应也是正常的。

过去几秒后,机器获取到用户位置,MKMapView上的小蓝点显示,但上述的subview回到constraints约束的原位。

故猜测在设置了showsUserLocation=true之后,当MKMapView在自身绘制小蓝点时,会对superview进行setNeedsLayout的操作。

原文地址:https://www.cnblogs.com/missingcat92/p/4683227.html