일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mvvm
- 책후기
- SWIFTUI
- roundingMode
- 부트캠프
- Structures and Classes
- 독후감
- human interface guidelines
- SWIFT
- 스타트업주니어로살아남기
- View Life Cycle
- Info.plist
- IOS
- NotificationCenter
- xcode
- @available
- 야곰아카데미
- 아이폰
- contentInset
- delegation
- 스위프트
- Modality
- Navigation
- Mock
- NumberFormatter
- Failed to register bundle identifier
- Codegen
- UIResponder
- 독서후기
- viewcontroller
- Today
- Total
목록Software Engineering/iOS (76)
호댕의 iOS 개발

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

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를 대체하는 ..

프로젝트를 진행하면서 아래처럼 이미지가 그라데이션으로 보이도록 구현을 하고 싶었다. 처음에는 단순히 이미지를 편집해서 사용할까 고민했지만 앞으로 이미지가 추가되는 경우 매번 편집을 하는 것은 좋은 방향이 아니라고 판단했고 코드를 통해 그라데이션 효과를 주기로 결정했다. 그렇다면 어떻게 그라데이션을 코드를 통해 줄 수 있을까? 1️⃣ CAGradientLayer의 인스턴스를 생성 후 frame을 설정한다 이는 CAGradientLayer를 사용하면 된다. 일단 CAGradientLayer의 인스턴스를 생성하고 Layer의 frame을 그라데이션 효과를 줄 View의 bounds만큼 정해준다. class ViewController: UIViewController { @IBOutlet weak var filt..

Implementing Modern Collection Views 문서를 보고 작성한 내용입니다. Apple Developer Documentation developer.apple.com 기존 CollectionView를 구현하기 위해선 UICollectionViewDataSource, UICollectionViewDelegate를 주로 사용했다. (TableView도 마찬가지이다) iOS 13.0 이후에는 UICollectionViewDiffableDataSource, UICollectionViewCompositionalLayout을 사용해서 CollectionView를 구현할 수 있다. (다만 UICollectionView.CellRegistration이 iOS 14.0부터 가능하다. 이게 뭔지는 밑..

최근 Rx를 통해 items를 Bind하거나, DiffableDataSource, Compositional Layout을 통해 리스트를 구현하다보니 TableView를 정석(UITableViewDataSource를 사용하는 방법)으로 구현하는 방법이 가물가물했다. 진짜 한동안 안쓰다 보면 머리 속에서 희석되는... 그래서 다시 사용한 김에 정리를 해보고자 한다. 기존 rx를 사용한 방식은 쉽게 tableView에 item을 넣어줄 수 있다. viewModel.list.observe(on: MainScheduler.instance) .bind(to: tableView.rx.items( cellIdentifier: String(describing: ProjectTableViewCell.self), cellT..

특정 아이템을 다른 외부 SNS로 공유하거나, 전달할 때, 복사할 때 AcitivityViewController를 사용할 수 있다. 이외에도 즐겨찾기, 북마크, 찾기와 같은 작업을 수행할 수 있다. iPad에선 반드시 popover를 통해 ActivityView를 present해야 하며, iPhone과 iPod touch의 경우 modal로 present를 해줘야 한다. ActivityViews의 H.I.G 문서 보기 시스템에선 다양한 프린트를 포함한, 메시지, 에어플레이 등 다양한 기본 활동을 제공한다. 이는 재정렬될 수는 없다. 사용자 정의 Activity를 표현할 때에는 간단한 이미지를 지정해줘야 한다. 이는 아이콘을 통해 표현이 되어야 하며 그림자를 포함하지 않고 적당한 투명도와 Antialias..

일단 라이브러리와 프레임워크는 개발을 하면서 반드시 사용해본 개념일 것이다. 최소한 프레임워크는 누구든 사용해봤을 것이다. 그렇다면 라이브러리와 프레임워크는 무엇일까? 🆚 라이브러리와 프레임워크 프레임워크 프레임워크는 Playgrounds 파일을 새롭게 생성하거나, 프로젝트를 생성하기만 해도 볼 수 있다. Xcode를 다뤄봤다면 무조건 봤을 UIKit이나 Foundation이 바로 프레임워크이다. 프레임워크는 앱을 구현하기 위해 필수적인 것들이다. 즉, 레고를 예로 들자면 다양한 크기의 레고 블록인 것이다. 우리는 이런 레고 블록이 없다면 아예 레고를 만들 수 없을 것이다. 직접 플라스틱을 녹여 만들지 않는 한 말이다. 프레임워크의 경우도 앱을 만들기 위해선 반드시 import를 해서 해당 프레임워크를 ..