본문 바로가기

분류 전체보기326

오토레이아웃, 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.
Alert생성할때 에러 Presenting view controllers on detached view controllers is discouraged. 📌 상황 새로 등장하는 ViewController에서 얼럿생성시 발생하는 에러 가끔씩 UIAlertController를 생성하고 그걸 새로운 UIViewController에서 띄울 때, 아래와 같은 경고 로그를 확인 하곤한다. Presenting view controllers on detached view controllers is discouraged. 📌 발생이유 이런 경고 로그가 생기는 이유는 생각보다 간단한 이유때문이다. UIAlert이 생겨야할 장소인 UIViewController가 모두 생성되어야 안전하게 Alert이 생성될 수 있기 때문이다. Apple에서 자체적.. 2022. 10. 31.
UIKit에서 SwiftUI의 Preview를 사용하는 방법 "TIL221031: How to use Preview in UIKit" 앱개발을 하는 중 UI작업을 할 때, 시각적으로 확인을 해야하는 경우가 생긴다. 물론 소규모의 앱이나 작업에서는 매번 빌드하는 것이 나쁘지않지만, 해당 페이지가 세부적인 항목이라 여러번 클릭하고 대기하고 심지어는 빌드시간이 오래걸린다면.. 우리는 많은 스트레스를 받게된다. 실제로 회사에서 빌드하는데 정말 많은 시간을 보내고, 그때마다 흐름이 끊기는 것을 경험한다. 이를 해결하기위해 여러 방면을 찾아보았다. 첫번째 방법은 SwiftUI의 Preview를 사용하는 방법이다. 하지만 단점은 SwiftUI를 사용해야 해당 기능을 킬수 있다는 것이었다. 아직 나의 작업환경이 구버전이기 때문에 대부분 UIKit 혹은 Objc라 엄두를 못내고 .. 2022. 10. 31.
SwiftLint 라이브러리 세팅하기 SwiftLint 다른 개발자와 협업을 하는 경우, 각자 다른 코드 스타일을 가지고 있기 때문에 자칫 가독성을 해칠 수가 있다. 그래서 SwiftLint는 현업에서도 매우 유용한 라이브러리다. SwiftLint에 대한 내용은 https://github.com/realm/SwiftLint 이곳에 아주 상세하게 나와있다. 심지어 한글도 지원된다.!! SwiftLint 설정하기 공식문서를 보면 다양한 설치방법이 소개되어있다. 가장 자주 사용하는 방법은 CocoaPods이나 Brew를 사용할 수 있다. CocoaPods CocoaPods를 사용하면 최신 버전 외에도 SwiftLint의 특정 버전을 설치할 수 있기 때문에 이 방법을 권장한다. → Homebrew는 최신 버전만 설치 가능 Podfile에 아래 내용.. 2022. 10. 28.
Unknown class @@ in Interface Builder file. Unknown class @@ in Interface Builder file. [Storyboard] Unknown class in Interface Builder file. 퇴근시간 20분전, Xcode로 내일부터 새롭게 작업할 프로젝트를 작성했는데 빌드가 안되는 것은 아니지만 하단에 에러로그가 찍힌다. 굉장히 찝찝하다. 이번 만큼은 에러로그없는 쾌적한 Xcode를 만들기 위해 바로 원인을 찾으려했는데 엄청나게 간단한 문제였다. Unknown class _ViewController in Interface Builder file 이 오류는 Xcode의 버그라고 알려져있기도 했지만 버그가 아니라 리얼 나의 실수일 수도 있다. Xcode가 워낙 버그가 많다고 하지만 이번엔 진짜 나 때문. 문제확인 일단 St.. 2022. 10. 27.
타임스탬프 다루기 스위프트로 코딩할 때 가끔 서버와의 통신 등을 이유로 유닉스 타임스탬프를 사용해야 할 때가 있습니다. 그런데 스위프트에서는 기본적으로 유닉스 타임스탬프 값을 얻는 방법을 제공하고 있지 않습니다. 따라서 이번 포스팅에서는 이를 간단하게 익스텐션으로 구현하는 방법에 대해 알아보겠습니다. 유닉스 타임스탬프(Unix Timestamp) 구현하기에 앞서 유닉스 타임스탬프에 대해 간단히 알아보겠습니다. 유닉스 타임스탬프란, 1970년 1월 1일 0시(UTC)를 기점으로 현재까지의 경과 시간을 초 단위로 환산하여 나타낸 값입니다. 예를 들어 2020년 1월 1일 0시(UTC)는 유닉스 시간으로 1577836800으로 표기합니다. 구현 방법 Date의 익스텐션에 프로퍼티 혹은 스태틱 프로퍼티를 추가함으로써 간단히 구현.. 2022. 9. 14.