Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[Swift/ Tip] 스크린의 크기를 구해보자 (UIScreen.main is deprecated)
TIP 2023. 7. 18. 02:33

시작 iOS + 16부터 UIScreen.main는 더 이상 사용되지 않는다는 메시지가 뜨네요. 사용은 가능하지만 그래도 메시지가 거슬리니까, UIScreen.main을 사용하는 대신, 다른 방법으로 Screen의 크기를 구하는 방법을 알아봅시다. 방법 1 공식문서에서 하라는 대로 따라해보기 (정석?!) guard let screen = view.window?.windowScene?.screen else { return } let screenSize = screen.bounds 방법 2 UIApplication를 통해 window 접근해서 사용하기! guard let window = UIApplication.shared.connectedScenes.first as? UIWindowScene else { ..

article thumbnail
[Swift/ Tip] 한 버튼에서 2가지 동작을 사용해보자
TIP 2023. 7. 15. 01:56

속성 isSelected을 이용 속성 isSelected은 Bool 타입으로 값을 설정 안 한다면, false 값을 갖고 있습니다. isSelected에서 toggle 메서드를 이용해 줄 겁니다. 만약, 버튼을 클릭 될 때마다 toggle을 실행하게 만들어주면, isSelected의 값이 false true로 계속 전환되겠죠? 여기서, 간단한 로직을 추가하여 버튼이 클릭될 때마다 다른 동작을 갖도록 만들 수 있습니다. @objc func buttonHandelr(_ sender: UIButton) { // 말 그대로 Bool 값을 toggle 합니다. sender.isSelected.toggle() // 버튼이 클릭될 때마다, 버튼 이미지를 변환 if sender.isSelected { sender.se..

article thumbnail
[Swift/ TIL #36] Web 보여주기 (Safari 앱, SFSafariViewController, WKWebView)
프로젝트 2023. 7. 12. 23:35

[TIL #36] 2023 / 07 / 12 앱 내에서 Web을 보여주는 방법을 간단히 정리해보려 합니다. 크게 3가지 방법으로 Web을 보여줄 수 있습니다. 1. Safari 앱 직접 사용 2. SFSafariViewController 사용 3. WKWebView 사용 Safari 앱 직접 사용 직접, Safari App을 실행하여 Web을 보여주는 방식입니다. @objc func buttonHandler(_ sender: UIButton) { switch sender.currentTitle { case "Safari App": guard let url = URL(string: "https://www.apple.com"), UIApplication.shared.canOpenURL(url) else { ..

article thumbnail
[Swift/ TIL #35] 앱에서 Email 보내는 기능 (MessageUI)
프로젝트 2023. 7. 11. 16:51

[Swift/ TIL #36] 2023 / 07 / 11 이전에 이미 메일 보내는 기능을 구현을 해봤었는데, 오랜만에 다시 구현하려니 헷갈려서 간단히 정리한 뒤, 다시 사용하려고 이렇게 정리합니다. 사용방법은 공식문서 에 자세히 설명이 돼있어요. 시작 이렇게 버튼을 만들어줬고 버튼을 클릭하면 mail을 보내는 기능을 만들어 보려합니다. class ViewController: UIViewController { lazy var button: UIButton = { let button = UIButton(configuration: .filled()) button.frame = CGRect(x: 150, y: 400, width: 100, height: 50) button.setTitle("문의 사항", for..

article thumbnail
[Swift/ TIL #34] enum에서 Protocol 채택 및 적용 (프로토콜의 요구사항을 열거형 case에 적용)
프로젝트 2023. 7. 6. 02:56

[Swift/ TIL #34] 2023 / 07 / 06 Protocol의 요구사항들을 enum의 case로 적용시키는 방법 및 기본적으로 사용되는 enum에 Protocol을 채택하여 사용하는 방법을 알아봅시다. 처음 보는 선언 방식 열거형에 프로토콜을 채택하는 방법 중, 처음 보는 선언 방법이 있어 간단히 적어보려 합니다. (Protocol의 요구사항들을 enum의 case로 적용시켜 나열시키는 방법입니다.) 설명은 주석을 참고해 주세요. (제가 이해한 대로 적은 거라 틀린 내용이 있을 수 있습니다) 그리고 조금 더 자세한 정보를 알고 싶다면 밑에 참고 링크들을 참고해 주세요. // Swift 5.3 에서 도입 protocol DataProtocol { // Self 자기 자신을 반환 (아래 Enu..

article thumbnail
[Swift/ TIL #33] Git 커밋 메시지 컨벤션(+Gitmoji)
프로젝트 2023. 6. 29. 06:31

[Swift/ TIL #33] 2023 / 06 / 29 흠, 깃 커밋 내용은 최대한 자세히 쓰기만 하면 되는 줄 알았는데, 완전히 잘못하고 있었습니다. 뭐, 혼자 할 때는 크게 문제없겠지만, 나름의 개발자 사이에서 관습적으로 통용되는 규칙이 있더라고요. 나중의 협업을 위해서 간단하게라도 정리를 해보려 합니다. 많은 개발자 분들이 Udacity Git Commit Message Style Guide 를 참고하더라고요. Git Commit Message Convention 깃은 코드 형상 관리 도구로써, 파일의 변경사항을 기록하여 추적이 용이하게 만들어주는 도구죠. 만약, 코드에 문제가 발생 시, 문제 지점(변경 이력)을 추적하여 이전 버전으로 파일을 복구해줘야 합니다. 그런데 커밋 내용이 규칙적(일관적)..

article thumbnail
[Swift/ TIL #32] 탭바 선택 시, 뷰컨이 나타나는 애니메이션 효과를 넣어보자
프로젝트 2023. 6. 27. 00:22

[Swift/ TIL #32] 2023 / 06 / 26 ~ 2023 / 06 / 27 오늘은 탭바 아이템을 클릭할 때, 슬라이드 효과 같은 애니메이션 효과를 만들어 보려고 합니다. (뷰 컨트롤러 전환 애니메이션) 탭바 애니메이션 예전에 만들어 만들어 둔, 탭바에 애니메이션을 적용시켜 보겠습니다. 일단 탭바 애니메이션 적용을 위해, 처음으로 할 작업은 탭바 델리게이트를 채택해 주는 겁니다. class WorldTimeViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.tabBarController?.delegate = self // 커스텀으로 탭바컨트롤러를 만들어줬으면, 이런식으로 하겠죠. // ..

article thumbnail
[Swift/ TIL #31] Dark, Light Mode를 다뤄봅시다 (StatusBar 포함)
프로젝트 2023. 6. 24. 02:02

[TIL #31] 2023 / 06 / 23 iOS13부터 다크모드가 도입되었습니다. 라이트 및 다크모드 적용하는 방법들을 알아봅시다. Info.plist로 적용 방법 기본적인 사용 방법으로는 Info.plist에서 Appearance를 통해 스타일을 정해주는 겁니다. Value값을 통해 원하는 스타일을 선택할 수 있습니다. (Light, Dark) 앱 내에서 Appearance 적용 방법 Info.plist 대신, SceneDelegate 및 UIViewController에서도 코드를 통해 Appearance을 변경해 줄 수 있습니다. 바로, overrideUserInterfaceStyle를 이용하여 다크 및 라이트 모드 변경이 가능합니다. window에서 전역 설정 화면이 생성되는 시점인 SceneD..

article thumbnail
[Swift/ TIL #30] hitTest와 point (중첩 된 뷰의 계층을 확인, 터치 이벤트)
프로젝트 2023. 6. 15. 06:01

[TIL #30] 2023 / 06 / 14 ~ 2023 / 06 / 18 현재 프로젝트에서 하위 뷰와 상위 뷰가 겹쳐지게 만들었습니다. 그런데 상위 뷰(아래에 위치한 뷰)를 배경색만 clear로 해주면 터치가 될 줄 알았는데, 안되더라고요... 해결 방법을 찾아보다가, hitTest와 point란 놈들을 통해 각 하위 뷰의 터치 이벤트를 전달이 되더라고요. 그래서 이렇게, 한번 정리를 해보려고 합니다. 하단의 참고 링크들을 참고하여, 제 생각을 정리해 봤습니다. hitTest 공식문서에서는 hitTest를 이렇게 설명하고 있습니다. "현재 뷰(UIView)의 뷰 계층 구조에서, 자기 자신(self)을 포함하고, 지정된 지점(터치된 Point)을 포함하는 가장 먼 자식 뷰(?)를 반환합니다."라고 되어있..

article thumbnail
[Swift/ TIL #29] AlertController 사용방법, CustomAlertController를 만드는 방법 (PopupView)
프로젝트 2023. 6. 13. 20:07

[TIL #28] 2023 / 06 / 13 간단히 AlertController 사용방법 및 CustomAlertViewController를 만들어 볼 예정입니다. UIAlertController 사용자에게 각각의 상황에 맞게 알림 및 경고로 사용자에게 알려 상호작용을 할 수 있는 컨트롤러입니다. 3개의 파라미터와 UIAlertAction만 만들어 주면, UIAlertController를 바로 사용할 수 있습니다. 먼저 UIAlertController를 생성 시, 필요한 파라미터들은 title, message, preferredStyle이 있습니다. title 알람의 제목 message 알람의 본문 내용 및 추가 설명 preferredStyle 알람창의 스타일을 정합니다. alert, actionShee..

반응형