UIView 내에 있는 view를 회전 및 확대 / 축소 기능이 필요하였다. 이때 확대 / 축소 / 회전을 시켜주기 위한 버튼이 필요하였는데

이 버튼은 상위 UIView 내에 존재하여 확대 / 축소시 같이 변경되는 현상을 방지해야했다.

이런 현상을 방지하기 위해 버튼이 있는 위치를 계속 변경 시켜주어야 하는데 많은 고민을하다가 아래의 메소드를 발견했다.

  •  convertPoint:toView:
  •  convertPoint:fromView:
  •  convertRect:toView:
  •  convertRect:fromView:
  • 위 메소드들은 인수로 전달하는 view에대한 절대 좌표 및 Rect값을 반환해주는 메소드 이다.

  • 이 메소드들이 왜 위의 현상들을 해결 한 이유는 하위 뷰에서 회전을 하게 되면 좌표값은 항상 고정된 값만 나오게 된다.

    하지만 위 메소드를 통해 이런 좌표값을 상위 뷰에서 위치를 자동으로 계산을 해주니 회전에대한 복잡한 수식이 필요 없어지게 되었다.

    -(CGPoint) handlerPoint:(UIView *)view {
        return [self convertPoint:i_HandlerPoint.center toView:view];
    }

     

    하위뷰에서 회전에 따라 같이 회전하는 point뷰를 만들고 이 뷰의 center값을 위 메소드들을 통해 상위뷰의 절대좌표를 얻을 수 있게된 것이다.

    평소에는 잘 사용안할 메소드이지만 이렇게 사용하니 정말 강력한 메소드라는걸 느낀다.

     

     

     

    + Recent posts