본문 바로가기

분류 전체보기321

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.
UserInterfaceState.xcuserState가 자꾸 떠요 UserInterfaceState.xcuserState가 자꾸 뜰 때 Xcode작업을 하고 깃에 업로드를 하다보면 UserInterfaceState.xcuserstate 이 파일이 계속 보일 때가 있다. 그리고 프로젝트 파일을 그냥 훑어보기만해도 깃 백스테이지에 변화가 생겼다고 보이는게 여간 성가신게 아니다. 이 파일은 로컬중심으로 데이터가 생성되고 재구성하면서 파일이 생성된다. 혼자 할때는 계속 깃에 동기화를 해도 문제가 전혀없지만, 협업중에는 이걸 올리고 서로 머지를 하다가는 Conflict가 너무 자주 생겨버버려서 홧병으로 쓰러질 수가 있다. 이를 해결하기 위한 첫번째 방법은 .gitIgnore를 사용하는 것이다. 방법1: git Ignore사용하기 ignore파일의 하단에 *.xcuserstate.. 2022. 11. 8.
git ignore 사용하기 보통 우리가 사용하는 프로젝트는 깃을 통해 버전관리를 할수가 있다. git push를 하게 되면 Local에서 사용하는 프로젝트는 Remote에 저장이 되는데 이때 private하거나 궂이 remote에 안올라가도 되는 파일들이 있을 때가 있다. 공유하면 곤란한 key 값이나 각종 라이브러리에 대한 정보가 담긴 cocoapods, spm 등등이다. 이 파일들. 특히 라이브러리 관련 파일들은 새롭게 빌드하게 되면 또 새로운 파일로 인식을 하게 되는데 그럴때마다 깃에서 인식을 해버리면 매번 커밋을 하기전에 신경이 쓰이는 일이 벌어진다. 개인적으로 작업한다면 모르겠지만 여러명이서 협업을 하게 될경우 , xcode에 담겨있는 유저정보가 서로 덮어쓰기 되면서 충돌을 일으킬 가능성도 있다. 이를 위해서 하는 작업이.. 2022. 11. 8.
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.
홍드로이드님의 모각코 후기 안녕하세요 iOS개발자 긱코드입니다. 이번에 홍드로이드님이 주선하신 모각코에 다녀왔어요 모각코란 모여서 각자 코딩을 줄임말을 뜻합니다 일시는 11월 1일 화요일 저녁 7시 장소는 강남역에서 도보 10분거리에 위치한 카페 알베르였습니다! 이전에도 몇번 모인적이 있다고 전해들어서 못어울리면 어떻게 하나 라는 일말의 걱정을 안고 참석했습니다! 첫인상 마침 여러명이 앉기 좋은 자리가 있어 미리 선점해 대기하고 있었어요. 약속시간이 되자 하나둘 어딘가에 계시던 분들이 모이셨고 홍드로이드님( 이하 홍드님으로 적을게요! )이 처음오신분들을 위해 돌아다니면서 소개를 해주셨습니다. 긴 테이블 2개를 꽉 채워 앉아 살짝 놀랐고 다들 오시자마자 노트북을 꺼내 코딩을 시작하는게 신기했어요! 두세분 모여서 최근 진행하는 프로젝.. 2022. 11. 2.
maximumViewportInset cannot be larger than frame 웹뷰 리사이징 에러 [ViewportSizing] maximumViewportInset cannot be larger than frame 웹뷰를 init하던중, frame을 지정시키자 디버그 Area에서 아래처럼 에러로그가 발생했다 [ViewportSizing] maximumViewportInset cannot be larger than frame [ViewportSizing] minimumViewportInset cannot be larger than frame 에러가 났던 코드 let webView = WKWebView(frame: .zero, configuration: configuration) 해결 코드 이렇게 변경하여 프레임을 0보다 크게 설정하여 해결할 수 있었다. let webViewSize.. 2022. 11. 1.
SwiftLint 세부설정하기 SwiftLint 세부설정하기 이전글: SwiftLint 세팅하기 SwiftLint를 brew로 설치해 사용하고 있다. 자동 수정세팅까지 해서 만족스럽게 사용을 하고있는데, 갑자기 AppDelegate함수가 120자 이상이라 경고 메세지가 등장하기 시작했다. 그래서 잠시 뒤로 미뤄 뒀던 SwiftLint 세부설정방법을 조사해본다. SwiftLint를 설정하지 않은 상태에서는 이부분은 아주 자연스러운 부분이다. 특히나 여기말고도 Delegate관련 함수들은 파라미터를 포함해 3줄, 4줄까지도 가는 함수들이 많기 때문에 이건 아니다 싶어 예외처리를 해야겠다는 생각이 들었다. SwiftLint를 세팅하면 보이는 경고 아래처럼 수정할 경우, 한줄에 120자 제한 경고는 사라진다. 방금전 이미지처럼 수정할 경우 .. 2022. 11. 1.