2017-04-20 11 views
0

사진 라이브러리 뷰어가있는 앱이 있습니다. 응용 프로그램에서 사진을 선택하고 사진 주위에 제스처 축척 및 팬을 사용할 수 있습니다. 나는이 사진을 포함하는 UIImageView의 아핀 변환을 변경하여이 작업을 수행합니다. 이 앱은 전화 방향 변경도 지원합니다. 어떤 상황에서는 방향 변경에 대한 UIImageView의 프레임 계산이 잘못된 것 같습니다. 일반적으로 프레임 크기가 잘못 계산됩니다. 정체성여러 방향 변경 후 변환 된 UIView의 틀이 엉망입니다

  • 설정 UIImageView에 다른 지점에 대한 확장하기 위해 새로운 뷰 변환을 적용 그래서 우리는 풍경
  • 에 세로에서 핀치 제스처에 대해
  • 회전 전화를 확장하는 변환
  • Set 뷰를 변환 이미지에 가로에서 세로로
  • 회전 전화는
  • 세트 신분으로 다시 변환

이후 UIImageView 프레임이 원래의 프레임과 다르므로 이미지의 크기가 조정됩니다.

UIImageView의 자동 크기 조절 플래그는 .flexibleWidth 및 .flexibleHeight입니다. 이것을 피하기 위해 할 수있는 일이 있습니까? LayoutSubviews가 확장 된 UIView에 잘 대처하지 못하는 것 같습니다. viewWillLayoutSubviews()에서 scale을 제거하고 viewDidLayoutSubviews()에서 다시 적용 해 보았습니다. 그러나 도움이되지 않았습니다.

답변

2

변형은보기의 경계를 변경하지 않습니다. 자동 레이아웃 계산 후 적용됩니다. 변환은 애니메이션과 같은 일시적인 것들에 사용되어야하며 UI의 위치 지정 및 크기 조정을 위해 사용되어서는 안됩니다 (예를 들어 panGestureRecognizer와 같은 좌표를 잘못 지정했을 수 있습니다).

저는 UIScrollView에 이미지 뷰를 넣는 것이 변환을 망치는 것보다 낫다고 생각합니다. UIScrollView는 이미 패닝 (panning)과 핀치 (pinch)를 처리하여 줌 기능을 수행하므로 scrollViewDidZoom을 처리하고 이에 따라 제한을 조정해야합니다. here is an example.

+0

괜찮은 건 저에게 줄 것입니다. – Spads