我有一个带照片库查看器的应用程序。在应用程序中,您可以选择照片并使用手势缩放和平移照片。我这样做是通过更改包含照片的UIImageView的仿射变换。该应用程序还支持更改手机方向。在某些情况下,UIImageView框架在方向变化上的计算似乎是错误的。以下通常会导致错误地计算帧大小。
在此之后,UIImageView框架与原来的框架不同,因此图像看起来会缩放。
UIImageView的自动调整标志是.flexibleWidth和.flexibleHeight。我能做些什么来避免这种情况。看起来LayoutSubviews不能很好地处理缩放的UIViews。我尝试在viewWillLayoutSubviews()中删除比例并在viewDidLayoutSubviews()中重新应用,但这没有帮助。
答案 0 :(得分:2)
变换不会改变视图的边界;它们在计算自动布局后应用。转换应该用于动画之类的短暂事物,而不是用于定位和调整UI的大小(例如,这也会为你提供像panGestureRecognizer这样的东西的错误坐标。)
我认为你最好把你的imageView放到UIScrollView中,而不是搞乱转换。 UIScrollView已经处理了平移和缩放以进行缩放,因此您只需处理scrollViewDidZoom并相应地调整约束。 here is an example