iOS HIG 독서모임 Drag & Drop (2)

French Marigold·2024년 2월 5일
0

iOS HIG 독서모임

목록 보기
14/16

Drag 할 때, 설정 관련하여 유의할 점

  1. 필요하다면 Drag 되고 있는 Contents에 알아보기 쉽게 Preview를 제공할 것

    • 예를 들어, 사진 여러 장을 드래그하고 있을 때, 밑에 여러 장의 사진이 겹쳐져 있는 UI를 만든다던지
  2. Drag 데이터를 가장 고해상도에서 낮은 해상도 순으로 제공할 것

    • PDF - PNG - JPEG 순으로 해상도가 높음.
    • Drag & Drop으로 어떤 이미지나 사진을 가져올 때, 사용자에게 PDF 파일로 가져올 것인지, PNG 파일로 가져올 것인지, JPEG로 가져올 것인지 물어보지 마라.
  3. 앱 내에 존재하는 데이터 그 자체를 먼저 적용하자

    • 예를 들어, 차트를 사용하는 경우 이미지 버전의 차트를 가져올 수도 있지만 차트 그 자체를 가져와서 적용하는 것이 더 좋다.
    • 만일 데이터 그 자체를 적용하기 어렵다면 그 뒤에 이미지 데이터를 고려해야 하는 것이 좋다.
  4. Drag & Drop을 통해 콘텐츠를 전달할 때 시간이 오래 걸리거나 리소스를 많이 사용하는 경우 NSFileProviderExtension을 사용하자.

    • NSFileProviderExtension은 앱이 실행되고 있지 않아도 Background 영역에서 콘텐츠를 전달하도록 보장하는 객체이다.
    • 단, 사용자가 콘텐츠를 드롭한 시점부터 NSFileProviderExtension이 적용될 수 있다.
  5. Drag & Drop을 통해 콘텐츠를 전달할 때 시간이 오래 걸린다면 얼마나 시간이 걸리는지 사용자가 알 수 있게끔 UI를 제공해야 한다.

    • 콘텐츠를 다운로드하거나 큰 파일을 복사해서 시간이 오래 걸릴 경우 지금 30%가 완료되었다, 70%가 완료되었다 라고 알 수 있게끔 UI를 제공하라는 뜻이다.
    • NSProgress 라는 객체를 이용하여 로딩 시간을 표현해낼 수 있음

Drag 한 객체를 받아들일 때, 설정 관련하여 유의할 점

  1. Drop 될 때에 시각적인 효과를 사용할 것

    • 예를 들어, 사진을 Drop 하려고 한다면 네모난 직사각형과 + 모양을 UI로 만들어 이 곳에 사진이 들어갈 수 있다는 것을 나타낼 수 있음
    • 어떤 사진을 Drop 할 때에 Drop 하려고 하는 부분에만 하이라이트 표시를 할 수도 있음 (대신 Drop을 완료한 이후에는 하이라이트 표시를 꼭 없애라.)
  2. Drag 하는 컨텐츠가 디바이스의 경계를 벗어나 Drag 될 때, 스크롤 될 수 있도록 하자.

    • 애플에서 기본으로 제공되는 UITextField와 UITextView는 이 스크롤 기능이 내재되어 있음 (커스텀은 왠만하면 하지 말자)
  3. 앱 내에 존재하는 데이터 그 자체를 먼저 적용하자

    • 예를 들어, 차트를 사용하는 경우 이미지 버전의 차트를 가져올 수도 있지만 차트 그 자체를 가져와서 적용하는 것이 더 좋다.
    • 만일 데이터 그 자체를 적용하기 어렵다면 그 뒤에 이미지 데이터를 고려해야 하는 것이 좋다.
  4. Drop된 컨텐츠 내용의 중요 부분만 추출할 것

    • 예를 들어, 연락처를 메일에다 Drag 할 경우, 연락처의 중요 정보 (이메일과 이름) 만 사용될 수 있도록 하자.
  5. 테이블 뷰와 컬렉션 뷰 내에 컨텐츠를 Drop 했을 경우, PlaceHolder를 띄워라.

    • PlaceHolder는 컨텐츠가 다 전송된 후, 위치할 곳을 임시로 표시해주는 역할을 맡는다.
  6. 시간이 오래 걸리는 컨텐츠를 Drop 했을 경우, 진행 상태를 표시하자

    • 예를 들어, 어떤 셀 위에 컨텐츠를 Drop 하였을 경우, 해당 셀 위에서만 진행 상태를 표시하도록 한다.
  7. 콘텐츠를 Drop 하고 프로세스가 시작될 때 피드백을 제공하면 좋다.

    • 쉬운 예시로 우리가 어떤 파일을 다운로드 할 경우, 해당 파일이 다운로드 되고 있다는 것을 보여주는 시각적인 피드백 (위에 파일 모양이 생기고 Progress Bar가 생기는 것)을 제공하면 좋다.
  8. Drop에 실패했다면 사용자에게 알려주어야 함

  9. 텍스트를 Drop 했을 경우, Drop된 영역에서 사용하는 텍스트의 폰트 및 크기가 Drop 한 텍스트와 같아야 함.

    • 예를 들어, Drop을 할 곳의 텍스트의 크기가 16pt 라면, 텍스트를 Drop 했을 때에도 16pt로 동일하게 맞춰져야 한다는 것.
  10. 앱 내에서 Drag & Drop을 할 경우, Drag & Drop을 취소하기 어려울 수 있으므로 사용자가 직관적으로 확인하여 Drag & Drop을 취소할 수 있는 창을 만들자.

profile
꽃말 == 반드시 오고야 말 행복

0개의 댓글