2017-04-20 32 views
0

我有一個圖片庫查看器的應用程序。在應用程序中,您可以選擇一張照片並使用手勢縮放和平移照片。我通過更改包含照片的UIImageView的仿射變換來完成此操作。該應用程序還支持更改手機方向。在某些情況下,計算UIImageView的框架方向更改似乎是錯誤的。以下通常會導致錯誤計算幀大小。幀之間的變化

  • 與屬性集合的UIImageView變換
  • Set視圖變換,所以我們正在加強關於縮放手勢
  • 旋轉手機從縱向到橫向
  • 應用新的變換,視圖縮放關於不同點圖像中
  • 旋轉手機從橫向到縱向
  • 組變換回身份

這個UIImageView的幀後是從它最初讓圖像看起來比例不同。

的自動尺寸標誌爲的UIImageView是.flexibleWidth和.flexibleHeight。有什麼我可以做,以避免這種情況。它看起來像LayoutSubviews不能很好地處理縮放的UIViews。我嘗試刪除viewWillLayoutSubviews()中的縮放並在viewDidLayoutSubviews()中重新應用,但這沒有幫助。

回答

2

變換不改變你的觀點的界限;在計算自動佈局後應用它們。轉換應該用於暫時性的動畫,而不是用於定位和調整UI的大小(例如,這也會給panGestureRecognizer之類的東西提供不正確的座標)。

我想你最好把你的ImageView到一個UIScrollView比用變換搞亂。 UIScrollView已經處理平移和捏縮放,所以你所要做的就是處理scrollViewDidZoom並相應地調整你的約束。 here is an example

+0

OK歡呼會給一個去。 – Spads