[SwiftUI] Context Menu #29
hyun99999
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
내용
앞서, Menu 구조체를 통해서 위와 비슷한 메뉴창을 구현해보았습니다.
그런데,
Menu
와 동일한 menu 창을 띄우지만 해당 뷰가 불투명한 배경을 가진채 부각되는 점이 다릅니다. 그래서 HIG 에서 안내해준 Context Menu 라고 판단했습니당!Context Menu 에 대해서 HIG 로 알아보자!
🔥 HIG - Context Menus
iOS 13 이후부터 인터페이스를 복잡하게 만들지 않고, onscreen items 와 관련된 추가 기능에 액세스할 수 있도록 할 수 있습니다.
Context menus
는 Peek and Pop 과 유사하지만 두 가지 다른 점이 있습니다.Context menus
는 iOS 13 부터 모든 기기에서 가능합니다.Peek and Pop
은 3D Touch 를 지원하는 기기에서 가능합니다.Context emenus
는 즉시 상황에 맞는 명령을 표시합니다.Peek and Pop
은 명령을 보려면 위로 스와이프해야 합니다.context menu 를 표시하기 위해서 사람들은 시스템 정의 touch and hold gesture 또는 3D Touch 를 사용할 수 있습니다.(3D Touch 는 context menus 를 더 빠르게 보여줄 수 있습니다.)
context menu 가 열리면, 아이템의 미리보기와 명령 리스트를 보여줍니다. 사람들은 명령을 선택하거나 항목을 다른 영역, 윈도우, 앱으로 끌 수 있습니다.
Adopt context menus consistently. 일부 위치에서는 제공하지만 다른 곳에서는 제공하지 않는 경우, 사람들은 기능을 사용할 수 있는 위치를 알지 못하고 앱에 문제가 있다고 생각할 수 있습니다.
Include only the most commonly used commands that apply to the item. 예를 들어, Mail message 를 위한 context menu 에서 답장하고 이동하는 명령을 포함하는 것은 의미가 있지만, 서식 지정이나 mailbox 명령을 포함하는 것은 의미가 없습니다. 너무 많은 명령을 나열하면 사람들을 압도할 수 있습니다.
Include a glyph with each command in a context menu. glyph(상형 문자) 는 명령의 의미를 강화하여, 사람들이 기능을 즉시 이해할 수 있도록 도와줍니다.
SF Symbols
를 사용할때, 명령을 나타내는 기존의 기호를 선택하거나 사용자 정의 glyph 를 생성할 수 있습니다. context menu 에submenu
가 포함되어 있다면, 추가 명령이 있음을 의미하는 system-provided chevron 기호가 자동으로 보여지기 때문에 glyph 가 필요없습니다.Use submenus to manage complexity. submenu 는 논리적으로 관련있는 명령의 보조 메뉴를 표시하는 context menu item 입니다. submenu 에 내용을 설명하는 직관적인 타이틀을 지정하여서 사람들이 submenu 의 명령들을 보여주지 않고도 예측할 수 있도록 합니다. 간결하고, 행동 지향적인 타이틀은 현재 상황에 필요하지 않는 submenus 를 건너뛸 수 있도록 합니다.
Keep submenus to one level. submens 는 context menu 를 줄이고 사람들이 수행할 수 있는 명령을 명확히 할 수 있지만, submen 가 한 개 보다 많아지면경험이 복잡해지고 사람들이 탐색하기 어려울 수 있습니다.
Place the most frequently used items at the top of the menu. 사람들이 context menu 를 열때, 그들은 menu 의 맨위를 집중합니다. 가장 일반적인 아이템을 맨 위에 배치하는 것은 사람들이 원하는 항목을 찾는데 도움이 됩니다.
Use separators to group related menu items. 시각적 그룹을 만들면 사람들이 메뉴를 더 빨리 스캔하는데 도움을 줄 수 있습니다. 예를 들어, separator 를 사용해서 아이템 편집과 관련된 작업을 그룹화하고 아이템 공유와 관련된 작업을 그룹화 할 수 있습니다. 일반적으로 context menu 에 3개 이상의 그룹을 원하지 않습니다.
Avoid providing a context menu and an edit menu for the same item. 동일한 아이템에 대해 두 기능이 모두 활성화 된 경우 사람에게 혼란을 줄 수 있고 시스템이 의도를 감지하기 어려울 수 있습니다. For additional guidance, see Edit Menus.
Avoid providing an action button that opens the item preview. 사람들은 탭하여 미리보기 항목을 열 수 있으므로 일반적으로 명시적인 Open button 을 제공할 필요가 없습니다.
For developer guidance, see UIContextMenuInteraction.
출처:
Context Menus - Controls - iOS - Human Interface Guidelines - Apple Developer
참고)
출처:
Edit Menus - Controls - iOS - Human Interface Guidelines - Apple Developer
🔥 ContextMenu 가 Deprecated..?
SwiftUI 에서 ContextMenu 구조체가 deprecated 되 예정이란다..
deprecated 이지만 해당 구조체를 활용한 방법도 알아봅시다!
contextMenu(_:)
Attaches a context menu and its children to the view.
ContextMenu 라는 구조체 자체가 deprecated 이기때문에 ContextMenu? 를 타입으로 가지는 해당 메서드도 deprecated 되지 않나 싶습니다.(Xcode 에서는 표시가 되어 있지는 않지만...)
대체해서 사용하라는 메서드를 살펴보자!
contextMenu(menuItems:)
Adds a context menu to the view.
Overview
메뉴 선택에 의해 호출된 작업은 클로저 내부에 직접 코딩되거나, 아래처럼 함수 참조를 통해 호출될 수 있습니다.
출처:
Context Menus - Controls - iOS - Human Interface Guidelines - Apple Developer
Apple Developer Documentation
Apple Developer Documentation
🔥 클론 코딩
Menu
와 다르게 위에서부터 순차적으로 menu 가 형성되었다.github
https://github.com/Secret-Of-SwiftUI/SOS-gyuriracha
Beta Was this translation helpful? Give feedback.
All reactions