반응형
iOS 16.1, Xcode 14.2, Swift 5, UIKit 환경에서 진행했습니다.
iOS13 이후부터 UIMenu를 사용할 수 있게 되었습니다.
기존에 AlertController를 통해 사용자에게 알림을 표현하였는데,
여러 개의 메뉴를 선택할 수 있는 UIMenu를 쓸 수 있어서 개발의 폭이 넓어졌습니다.
UIAction은 버튼을 클릭할 때 사용하는 addTarget과 비슷한 역할을 하는데
title, image, handler 등의 속성을 추가하여 메뉴에 표현되는 이미지와 클릭되었을 때 동작하는 코드를 넣을 수 있습니다.
let actionArray: [UIAction] = [
UIAction(title: "테스트1", image: UIImage(systemName: "x.circle.fill"), handler: { _ in }),
UIAction(title: "테스트2", image: UIImage(systemName: "x.circle"), handler: { _ in }),
UIAction(title: "테스트3", image: UIImage(systemName: "rectangle"), handler: { _ in })
]
그리고 button menu 속성에 UIMenu를 넣은 후, showsMenuAsPrimaryAction 값을 true로 수정합니다.
let menu = UIMenu(title: "메뉴", children: actionArray)
button.menu = menu
button.showsMenuAsPrimaryAction = true
이제 버튼을 클릭하면 UIMenu가 뜨는 창이 나옵니다.
전체코드
class MenuViewController: UIViewController {
@IBOutlet var button: UIButton!
let actionArray: [UIAction] = [
UIAction(title: "테스트1", image: UIImage(systemName: "x.circle.fill"), handler: { _ in }),
UIAction(title: "테스트2", image: UIImage(systemName: "x.circle"), handler: { _ in }),
UIAction(title: "테스트3", image: UIImage(systemName: "rectangle"), handler: { _ in })
]
override func viewDidLoad() {
super.viewDidLoad()
let menu = UIMenu(title: "메뉴", children: actionArray)
button.menu = menu
button.showsMenuAsPrimaryAction = true
}
}
결과
참조
https://developer.apple.com/documentation/uikit/uimenu
반응형
'iOS > 코드조각' 카테고리의 다른 글
[iOS, Swift] 이미지뷰에 이미지 넣기(인터넷 url 주소) (0) | 2023.02.28 |
---|---|
[iOS, Swift] 이미지 파일 업로드하기 (alamofire, multipart-data) (0) | 2023.02.27 |
[iOS, Swift] 라디오버튼 구현하기 (0) | 2023.02.25 |
[iOS, Swift] 체크박스 구현하기 (0) | 2023.02.24 |
[iOS, Swift] Keyboard로 인해 가려진 뷰 올리기 (0) | 2023.02.22 |