chaneeii / iOS-Study-Log

✨ iOS에 대해 공부한 것들을 기록합니다 ✨
18 stars 0 forks source link

SwiftUI로 Mac App 만들기 #5

Open chaneeii opened 2 years ago

chaneeii commented 2 years ago

Mac Apps 관련 References

Basics

Useful Articles

chaneeii commented 2 years ago

SwiftUI for Mac - Part1

Setup

Xcode를 열어서 macOS 에서 App 템플릿을 선택하고 SwiftUI 로 프로젝트를 시작해주자!

스크린샷 2022-07-10 오후 11 53 02 스크린샷 2022-07-10 오후 11 54 06

Preview와 시뮬레이터 사용해보기

프로젝트를 생성하고 시뮬레이터를 실행해보자. 시뮬레이터를 실행할때는 My Mac을 선택한다!

그럼 이렇게 작고 귀여운 Mac App이 등장한다 😍 Canvas에서도 확인이 가능하다! 우리가 아는 Mac App 의 사이즈를 내기 위해서는 .frame() modifier를 이용해야한다.

스크린샷 2022-07-11 오전 12 00 35 스크린샷 2022-07-10 오후 11 59 16

그럼 이제 프레임 사이즈를 조절해보도록 하겠다. width와 height을 fix 하게 되면, 맥앱은 resize를 할 수 없다. 따라서 resizable 한 맥앱을 만들기 위해서는 아래와 같이 max/min 를 활용하여 modifer 를 설정하는 것이 중요하다.

.frame(minWidth: 600, minHeight: 400)
.frame(maxWidth: .infinity, maxHeight: .infinity)
스크린샷 2022-07-11 오전 12 06 13

그리고 맥앱을 개발할때는 아마도 화면 크기가 커져서 그런지 이렇게 따로 preview를 팝업으로 빼서 볼 수 있도록 preview를 제공한다!

스크린샷 2022-07-11 오전 12 11 18 스크린샷 2022-07-11 오전 12 11 49

View의 레이아웃 구성하기

이제 mac앱의 기본 레이아웃 형태 중 하나인 master-detail layout을 구성해보고자 한다. 우선 간단하게 텍스트의 리스트를 넣어보자!

References

https://troz.net/post/2019/swiftui-for-mac-1/

samsung-ga commented 2 years ago

퍼갑니다~

chaneeii commented 1 year ago

사이드바를 투명하게 만드는법

.listStyle(.sidebar) 을 사용하자

스크린샷 2022-08-01 오후 11 18 32
NavigationView {
    List(1..<10) {
         Text("\($0)")
    }
    .listStyle(.sidebar)
}

https://www.hackingwithswift.com/quick-start/swiftui/how-to-get-translucent-lists-on-macos

chaneeii commented 1 year ago

신호등 버튼 없애기

맥앱에서 신호등 버튼을 없애고 싶은 경우 이렇게 해결하면 되는데 더 좋은 방법이 있는지 알아봐야함.

스크린샷 2022-08-01 오후 11 40 38

        .onReceive(NotificationCenter.default.publisher(for: NSApplication.didBecomeActiveNotification), perform: { _ in
            NSApp.mainWindow?.standardWindowButton(.zoomButton)?.isHidden = true
//            NSApp.mainWindow?.standardWindowButton(.closeButton)?.isHidden = true
            NSApp.mainWindow?.standardWindowButton(.miniaturizeButton)?.isHidden = true
        })

ref https://stackoverflow.com/questions/66888981/how-can-i-remove-maximize-minimize-and-close-button-in-macos-in-swiftui-life-cy