일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- delegation
- UIResponder
- NotificationCenter
- Navigation
- Codegen
- xcode
- 부트캠프
- IOS
- contentInset
- SWIFTUI
- Failed to register bundle identifier
- mvvm
- 스타트업주니어로살아남기
- @available
- Mock
- 독후감
- 스위프트
- NumberFormatter
- roundingMode
- 독서후기
- Info.plist
- 책후기
- viewcontroller
- Structures and Classes
- SWIFT
- 야곰아카데미
- 아이폰
- Modality
- View Life Cycle
- human interface guidelines
- Today
- Total
목록전체 글 (145)
호댕의 iOS 개발

오랜만에 Swift 관련 컨퍼런스를 참여했다. 4개의 Session으로 구성이 되어 있었고 주제는 다음과 같았다. RIBs를 통한 상태 관리 why MVVM PR과 코드 리뷰 Mock 데이터를 통한 항상 성공하는 테스트 코드 짜기 RIBs를 통한 상태 관리 - 김남현님 | VCNC 사실 RIBs에 대한 이해도가 거의 없다시피 해서 발표 내용에 대해 완전히 이해하진 못했다. RIBs는 Uber에서 만든 크로스 플랫폼 아키텍처 프레임워크로 iOS 뿐만 아니라 안드로이드에서도 사용 가능한 아키텍처이다. (아직 공부해본 적이 없는 아키텍처라 잘못된 내용이 있을 수 있습니다) Interactor : 비즈니스 로직이 포함되어 있다. Rx 구독을 수행하고 상태 변경 결정을 한다. 또한 child로 연결할 다른 RIB..

Xcode를 14.0으로 올리고 iOS 16을 지원하게 되면서 전에는 보이지 않던 문제가 발생했다. 갑자기 개발자 모드가 필요하다는 것이다. (앱을 QA하기 위해 ipa 파일로 전달 후 Apple Configurator로 설치를 했더니 이렇게 나오게 됨) 개발자 모드란 그래서 개발자 모드에 대해 찾아봤더니 이번 WWDC 22에서 새롭게 나온 따끈따끈한 기능이었다. iOS 16 / watchOS 9에서 새롭게 나온 모드로 기본적으로 비활성화되어 있으며 이를 활성화하기 위해선 따로 개발자 모드를 활성화해줘야 한다. (한 번 활성화해놓으면 업데이트 및 재부팅을 하더라도 설정이 유지된다) 이게 나오게 된 이유는 개발자 기능이 표적 공격의 대상이 되며 일반 사용자들은 개발자 기능이 필요가 없기 때문에 사용자의 보..

일단 기존 4개의 꼭지점 모두 둥글게 일괄적으로 처리하려면 layer.cornerRadius를 주면 된다. 그리고 clipsToBounds를 true로 주면 모든 꼭지점을 둥글게 처리할 수 있다. 하지만 이렇게만 하면 특정 모서리만 둥글게 처리를 할 수 없다. 그럼 위 사진처럼 위 모서리만 둥글게 처리하려면 어떻게 해야할까? 이때 쓸 수 있는 것이 바로 layer.maskedCorners이다. 이는 CACornerMask의 배열로 되어 있으며 CACornerMask는 구조체로 타입 프로퍼티로 각각의 꼭지점이 선언되어 있다. 둥글게 하고 싶은 꼭지점을 layer.maskedCorners에 배열 형태로 할당해주면 된다. 따라서 만약 위 이미지처럼 위쪽만 둥글게 하고 싶은 경우 $0.layer.maskedCo..

SnapKit 톺아보기 SnapKit은 기존 anchor를 사용해 Constraints를 잡는 것보다 짧고 쉽게 오토레이아웃을 잡을 수 있도록 도와주는 라이브러리이다. 회사에서 프로젝트를 하며 처음 사용해봤는데 내가 생각했을 때 가장 좋은 장점은 translatesAutoresizingMaskIntoConstraints를 따로 안써도 된다는 것이다. 그리고 코드 자체도 꽤 간단해진다. 아래 코드처럼 직접 잡던 것들을 좀 더 간단하게 잡을 수 있다! NSLayoutConstraint.activate([ { 레이아웃 관련 코드 } ]) 스토리보드에선 자동으로 translatesAutoresizingMaskIntoConstraints를 false로 할당해주지만 코드로 레이아웃을 잡게 되면 이를 직접 작성해줘야..

리베이스를 해결하다가 갑자기 이런 에러가 나왔다... 갑자기 처음 보는 경고가 나와서 당황했었는데 역시 답은 에러 문구에 전부 나와있었다. Build Phase의 Compile Sources에서 중복된 build 파일을 스킵했다는 것이다. 그럼 이는 어디서 중복된 것을 지워줄 수 있을까?? 에러에서 나온대로 프로젝트의 Targets > Build Phase에 가면 이를 찾을 수 있다. Build Phase에서 내리다보면 Compile Sources라는 것이 있다. 여기서 경고에서 나온 파일 이름을 쳐보면.. 이렇게 중복된 파일이 있는 것을 찾을 수 있다. 하나만 지우고 빌드를 해봤지만 하나만 지워도 두 개다 지워지는 것 같다. 분명 Directory에는 파일이 존재하지만 Compile Sources에는 ..

cp holdy-iOS new-holdy-iOS iterm2나 터미널을 사용해 Git이나 파일들을 관리하다 보면 다양한 명령어를 사용하게 된다. Mac OS나 리눅스 모두 UNIX 기반이기 때문에 리눅스 명령어를 MacOS에서도 사용이 가능하다. 그럼 어떤 명령어들이 있는지 알아보자. 일단 모든 명령어 뒤에 --help를 붙이게 되면 해당 명령어에 대한 자세한 사용방법을 알 수 있다. 많이 사용하던 명령어부터 정리해보자. cd (Change Directory) 경로 이동을 하는 명령어이다. cd {디렉토리 주소}를 입력해주면 해당 디렉토리로 이동하게 된다. pwd (Print Working Directory) 현재 작업 중인 디렉토리를 출력해준다. ls (List) 현재 디렉토리에서 확인할 수 있는 목록..

iOS 15 이상에선 문제가 없었지만 iOS 14와 13에선 TableView를 통해 Cell을 띄울 때 TableView의 Cell보다 Separator들이 많이 생기는 문제가 있었다. (최근들어 OS 버전에 따라 달라지는 문제 때문에 골치가 아프다...) 이렇게 Cell이 아무것도 없을 때에도 Separator들은 알아서 생겨있다... 다만 iOS 15 이상에서 확인했을 때에는 전혀 문제가 없었다. 해결 방법은 간단하다. tableView(본인이 프로퍼티로 선언한 테이블 뷰).tableFooterView = UIView() 이 코드만 넣어주면 된다. 넣는 곳은 viewDidLoad에서 넣었다. (필요하다면 다른 곳에서 넣어도 무방하다) 이렇게 되면 Cell하단에는 전부 FooterView로 잡히면서 ..

출시를 목적으로 한 앱 개발을 하다보면 SystemFont가 아닌 CustomFont를 사용하게 되는 경우가 많다. (확실히 폰트를 적용한 것과 적용하지 않은 것은 꽤 많은 차이가 있었다) 그렇다면 커스텀 폰트를 어떻게 적용하는지 알아보자 커스텀 폰트 받기 디자이너가 따로 있다면 어떤 폰트를 쓰라고 말해주겠지만 1인 개발이나 개발자들끼리 개발을 하게 된다면 따로 받아야 할 것이다. 커스텀 폰트를 적용한 경험이 많지는 않지만 보통 Pretendard라는 글씨체를 많이 사용하는 것 같다. https://cactus.tistory.com/306 Pretendard Pretendard 프리텐다드 Pretendard 프리텐다드 글꼴 다운로드 일본어 버전 다운로드 GitHub에서 보기 system-ui를 대체하는 ..