代码改变世界

MKMapView.showsUserLocation 可能触发了 UIView.setNeedsLayout

2015-07-28 16:16  迷思的猫  阅读(320)  评论(0编辑  收藏  举报

今天遇到一个BUG:

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

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

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

 

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