Swift 14

[iOS] Compositional Layout 으로 복잡한 CollectionView 구현 - TVING 메인 뷰

안녕하세요 띵지니어 😼 입니다.오늘은 "Compositional Layout" 에 대해 포스팅해보려고 합니다. 1. UICollectionViewCompositionLayout 도입부 UICollectionViewCompositionLayout 이 뭐지?? 먼저 UICollectionViewCompositionLayout 은 UICollectionViewLayout 을 상속받은 클래스입니다.일단 개념은flexible 하고 adaptive 한 시각적 배열로 항목을 결합할 수 있는 레이아웃 객체 라고 합니다.(A layout object that lets you combine items in highly adaptive and flexible visual arrangements.)그래서 어디에 쓰는데..?..

iOS 2024.05.06

[iOS] UIPickerView 커스텀 구현 - UIKit

안녕하세요 띵지니어 입니다. 😼오늘은 PickerView에 대해 포스팅해보려고 합니다.따로 BottomSheet 안에아래의 형태로 PickerView를 넣어보고자 합니다.일단 기본 세팅 해줄게요올라오는 바텀시트를 봐주세요! RecruitmentNumberPickerViewController 안에 PickerView를 먼저 넣어 줍니다.레이아웃은 참고만 해주시고 PickerView 속성에 집중해주세요!!최종 코드 아닙니다!//// RecruitmentNumberPickerViewController.swift//// Created by 이명진 on 5/2/24.//import UIKitimport SnapKitimport Thenfinal class RecruitmentNumberPickerViewCo..

iOS 2024.05.02

[Swift] Optional Unwrapping (4) - 옵셔널 체이닝 (Optional Chaining)

안녕하세요 띵지니어 😼 입니다. 이번 시간에는 닐 코얼레싱(Nil-Coalescing)에 이어 옵셔널 언래핑하는 방법 중 네 번째 방법을 소개하려 해요 바로바로 옵셔널 체이닝(Optional Chaining)에 대해 포스팅 해보려고합니다. 시작 전에 "체이닝"? 이 뭐죠? 아래와 같이 점(.) 문자로 객체, 메서드, 속성에 접근을 하는 것을 보통 체이닝(Chaining) 이라고 합니다. 본격적으로 시작해 볼게요 🍎 옵셔널 체이닝 (Optional Chaining) 요약하자면 옵셔널 값에 대한 안전한 접근을 연속적으로 수행할 때 사용 합니다. 즉 옵셔널 값이 nil일 수 있는 여러 프로퍼티, 메서드, 서브스크립트를 하나의 연속된 표현식 내에서 안전하게 호출하고, 표현식 중 하나라도 nil을 반환할 경우, ..

Swift 2024.04.19

백준 2609번 최대공약수와 최소공배수 Swift

https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 내 코드 // 유클리드 호제법 func gcd(_ a: Int, _ b: Int) -> Int { var a = a var b = b while b != 0 { let temp = b b = a % b a = temp } return a } func lcm(_ a: Int, _ b: Int, gcd: Int) -> Int { return (a * b / gcd) } let input = readLine()!.split(separator: " ").map { Int..

BOJ/Swift 2024.04.18

[iOS] AutoLayout 충돌 해결하는 방법 (feat: SnapKit)

안녕하세요 띵지니어 😼 입니다. 이번 포스팅은 오토 레이아웃을 짤 때 Layout Conflict 가 발생할 경우 어떻게 해결해야 하는지 알아볼게요. UI Layout을 짜다가 다들 아래와 같이 Warning 메시지를 보신 적 있으실 거예요! (없으면 진짜 고수..) Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the..

iOS 2024.03.05

[iOS] 스토리보드 없이 UIKit으로 프로젝트 세팅: 코드베이스 설정

안녕하세요 띵지니어 😼 입니다. 이번 포스팅은 UIKit 프레임 워크에 스토리보드를 사용하지 않고 코드 베이스 로 프로젝트를 진행해야 할 때 초기 세팅을 어떻게 해야 하는지에 대해 알아보도록 할게요. 1. 프로젝트 생성하기 Create New Project... -> iOS -> App 아래와 같이 기본 사항을 입력해 줍니다. (똑같이 하셔도 됩니다.) **Product Name : 프로젝트의 이름을 정해줍니다. Team : 애플 개발자 계정을 129,000 원으로 구매했고, 개발 인증서가 있으면 그 계정으로 지정하면 되는데, 따로 없으면 None으로 지정하셔도 됩니다. (추후 수정 가능) **Organization Identifier: 저는 띵진으로 등록했는데, 원하시는 네임으로 하시면 됩니다. (보통..

iOS 2024.02.23

[iOS] 프로젝트에 폰트(Font) 넣는 법

오늘은 프로젝트 하면서 Apple에서 제공되는 font가 아닌 외부 폰트를 가져와서 프로젝트에 적용 시켜보는 작업을 해보도록 할게요 🍀 먼저 외부에서 font를 다운받아서 로컬로 다운 받아요 저는 길형진님의 pretendard 폰트를 다운 받았어요 폰트 다운로드 : 눈누 이제 프로젝트에 어떻게 적용 시키는지 알아볼게요 ‼️ 1. 다운로드한 폰트를 사용하고 싶은 대로 골라서 따로 프로젝트에 넣어 볼게요 저는 아래와 같이 5개의 폰트를 넣어 줄게요 2. Copy items if needed를 눌러서 완전하게 프로젝트에 넣어줍니다. 그리고 폰트를 적용하고 싶은 프로젝트 targets에 체크해줍니다. 저는 Puzzle-iOS에 해놓을 게요! 사진에는 체크가 안 되어있는데 Fonts를 적용하고자 하는 프로젝트 파..

iOS 2024.02.10

[iOS/Xcode] info.plist 위치 옮길때 에러 해결법

안녕하세요 이번 시간에는 프로젝트 초기 세팅을 하면서 info.plist 위치를 수정했을 때 빌드 에러가 날 때 해결하는 법을 알아볼게요 저는 사진처럼 "build input file cannot be found:Path" 에러를 겪었어요 에러를 자세히 읽어보니 info.plist의 경로를 알 수 없다고 떴어요 프로젝트 내부에서 info.plist 가 바뀐다고, 경로가 수정되진 않기 때문이에요 해결 방법 1. info.plist의 파일 위치와 프로젝트 파일 위치를 맞춰줘요 2. 프로젝트 -> Target -> BuildSetting -> Packaging -> info.plist File 의 위치를 알맞게 조정해 주면 됩니다. 그러면 관련 에러가 사라지고 빌드가 잘 되는 걸 볼 수 있어요

iOS 2024.01.26

[Swift] Optional Unwrapping (3) - 닐 코얼레싱 (Nil-Coalescing)

지난 시간에 옵셔널 언래핑 하는 방법 중 옵셔널 바인딩(Optional Binding) 부분을 공부해 봤어요 옵셔널 바인딩은 스위프트에 꽃 이라 .. 꼭 참고해 보면 좋아요! https://thingjin.tistory.com/entry/Swift-Optional-Unwrapping-2-%EC%98%B5%EC%85%94%EB%84%90-%EB%B0%94%EC%9D%B8%EB%94%A9-Optional-Binding-if-let-guard-let [Swift] Optional Unwrapping (2) - 옵셔널 바인딩 (Optional Binding) if let , guard let 지난 시간에 옵셔널 언래핑 하는 방법 중 강제 추출(Forced Unwrapping) 부분을 공부해 봤어요 https:/..

Swift 2024.01.18