본문 바로가기

모바일앱/iOS91

세로모드 고정 How to Set - 세로모드 고정 Step1. Project - General - Device Orientation - Potrait 체크 만약 여기서 해결이 안되는 경우, Step2 진행 Step2. // AppDelegate.swift func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { // 세로방향 고정 return UIInterfaceOrientationMask.portrait } 2022. 11. 28.
Date로 두 개의 시간차 구하기 Date로 두 개의 시간차 구하기 테스트를 하다보면 특정부분까지의 시간이 얼마나 걸리는지 알고 싶을 때가 있다. 이때 간단하게 Date함수를 이용해 시작시간과 현재시간을 가지고 시간을 구할 수 있다. 시간차는 Timer를 이용할 수도 있고 아래와 같이 Date를 이용할 수도 있다. 하지만 Date가 간단하게 구현이 가능하니 오늘은 이 방법을 알아보자 타이머 구현 class MainViewController: UIViewController { var startTime: Date? // 시작시간을 저장하는 함수 func startTimer() { let startTime = Date() self.startTime = startTime print("작업시작\(String(describing: self.star.. 2022. 11. 24.
간단한 MVVM구조 예제 간단한 MVVM구조 예제 원문 https://www.kodeco.com/34-design-patterns-by-tutorials-mvvm https://lsh424.tistory.com/68 깃: https://github.com/lsh424/MVVM_iOS MVC정리 https://lsh424.tistory.com/44 ! ├── AppDelegate │ ├── AppDelegate.swift │ └── SceneDelegate.swift │ ├── Controllers │ ├── ViewController.swift │ └── ViewController2.swift │ ├── Models │ └── Dog.swift │ ├── ViewModels │ └── DogViewModel.swift │ └──.. 2022. 11. 23.
앱과 웹간 소통방법(1) 앱과 웹간 소통방법(1) 웹뷰 디버깅 사파리 - 관리자도구를 누르면 콘솔창이 보인다. 이 콘솔창에 특정 키를 넣어 입력할 수 있다 웹뷰 새로고침 좌측 상단의 새로고침 버튼 콘솔창 입력 → 강력 새로고침 : window.location.reload() 콘솔에서 네이티브로 message를 보내는 테스트도 가능 아래 메시지를 입력하고 엔터를 치면, Xcode에서 메시지 수신 확인이 가능 window.webkit.messageHandlers.HandlerName.postMessage window.webkit.messageHandlers.HandlerName.postMessage('test') 이 방법은 나중에 소개하도록 하겠습니다! 1. 콘솔에서 네이티브로 alert보내기 window.alert("GeekCod.. 2022. 11. 18.
여러가지 접근권한요청 여러가지 접근권한요청 앱을 만들고 테스트를 하다보면 갑작스런 쓰레드에러가 나는 경우가 있다. UIView를 그리는데 있어 에러가는 경우는 Xcode에서 친절하게 보라색으로 표시해주지만 카메라, 사진첩 등 따로 권한을 요청해야만 하는 경우가 있다. 웹뷰를 사용하는 경우, 웹에서 따로 실행시켜준다면 넘어갈 수 있지만 사진을 찍는 경우: 카메라 사용 권한 동영상을 찍는 경우: 마이크 사용 권한 위와 같은 내용 뿐만 아니라 정말 다양한 권한들이 있다. 세팅방법 info.plist에 내용을 추가 하기만하면 정상작동한다. 다양한 접근권한 아래와 같이 다양한 권한이 존재한다. 애플 문서 블루투스 : Privacy - Bluetooth Always Usage Description 캘린더 : Privacy - Calen.. 2022. 11. 17.
WKWebView - Navigation Delegate함수 WKWebView에서 탐색 요청을 수락,로드 및 완료하는 과정에서 트리거되는 메서드들 세부코드 import Foundation import WebKit // MARK: - NavigationDelegate extension MainViewController: WKNavigationDelegate { // MARK: - 1. navigation request를 허용 / 거절하기 /// 지정된 action정보를 기반으로, 새 콘텐츠로 이동할 수 있는 권한을 요청하는 메서드. /// navigation request를 허용하거나 거부할 수 있다. /// - decisionHandler( .allow / .cancel / .download ) func webView(_ webView: WKWebView, dec.. 2022. 11. 15.
전통적인 MVC구조로 HTTP사용하기 전통적인 MVC구조로 HTTP사용하기 참고 포스팅 (원문) 참고 깃허브 컨트롤러는 일반적으로 공개적으로 사용 가능한 기능 모델을 통해 모델과 통신합니다. 모델은 KVO를 통해 컨트롤러와 통신할 수 있습니다. M: 데이터 및 데이터를 조작하는 로직 모델 개체 혹은 네트워킹 코드 V: C가 제어해야하는 UI구성요소 C에게 알리기위해 target-action 혹은 delegate패턴을 사용할 수 있다. 자기가 보여주고 있는 Model을 소유하고 있지않다 → 테이블뷰의 Delegate를 사용한다. C: M과 V사이에 위치 - 일반적으로 Delegate패턴 사용 아웃렛을 통해 뷰와 소통할 수 있다. 하지만 우린 궁극적으로는 모델에서 뷰로가는 소통을 멈춰야한다. 예를 들어 계산기를 만들때 뷰는 UIButton의 특.. 2022. 11. 14.
preview, canvas 위치 이동시키기 정말 킹받는 일은 회사에선 preview가 우측에 잘나오다가 집에서 위아래로 나올때가 있다는 거다. 혹은 멀쩡하다가 갑자기 위 아래로 바뀌는 날이 있다는 말이지.. 그냥 위아래로 작업을 할 수는 있지만.. 솔직히 신경쓰이니까.. 30분동안 귀찮아서 그냥 작업하다가 신경쓰여서 이것저것 만져보다가 찾았다. 다른 분들의 시간을 아끼기 위해... 그리고 또 이럴 나의 미래를 위해 기록합니다!! 2022. 11. 7.
오토레이아웃, Anchor, IBDesignable, IBInspectable 오토레이아웃 : 레이아웃을 자동으로 계산 Anchor View를 액자라고 생각하고 전체 화면을 벽이라고 생각하자. 액자는 걸지않으면 아래로 떨어지기때문에 Anchor(앙카)를 달아주어야한다. 자리를 잡으면 파란색 잡지못하면 빨간색으로 표시된다. 오토레이아웃의 성립조건 너비와 높이 지정 : 스크린사이즈를 기반으로 뷰의 크기 설정 width height 위치 지정 : 앵커로 설정 가로 → X축 세로 → Y축 뷰를 기준으로 앵커를 양옆에 달아주면 Xcode자체에서는 기기의 화면을 알고있기 때문에 자동으로 크기를 잡아줄 수가 있다. Constraint First item: X를 Second item: Y로부터 Constraint 만큼 오토레이아웃을 잡을 뷰의 이름이 헷갈린다면 이름을 수정해서 확인해볼 수 있다... 2022. 11. 7.
앱 빌드설정 선택하기 앱 빌드설정 선택하기 앱을 운영버전과 개발버전 혹은 QA버전으로 나누어 빌드하는 경우가 있다.이를 위해 타겟을 여러개 두는 경우가 있지만, 운영과 개발만 사용하는 경우 간단하게 Edit Scheme를 통해 설정할 수 가 있다. Xcode의 중앙 상단 에 앱의 아이콘부분 - Edit Schem 를 누른다. 그러면 각 동작별로 Release, Debug 모드를 사용할 것인지 선택할 수 있다. 만약 테스트플라잇에 디버그용으로 올릴용도라면 Archive에서 수정을 해야한다. ‼️ 깃을 되돌리더라도 xcode 자체가 복구되진 않아서 Archive를 수정한게 변경되지않을 수 있으니 반드시 아카이빙 완료후 원복하는 습관을 갖도록 하자. 각 동작을 누르면 해당 동작의 빌드 설정을 선택가능하다. 2022. 11. 3.