Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[iOS/Swift] 3. PinLayout 메서드를 알아보자! (+ ScrollView)
Xcode/Library 2024. 1. 20. 02:15

목차 FlexLayout, PinLayout을 사용해 보자! FlexLayout 모든 메서드들을 알아보자! PinLayout 메서드를 알아보자! (+ ScrollView)! 개인적으론 snapKit이 직관적이고 쉬운 것 같은데, 생각보다 FlexLayout + PinLayout도 많이 사용하는 것 같더라고요. 이제 거의 다 왔습니다. 빠르게 마무리 지어보고 사용하다가 팁이나 문제가 생기면 바로 새로운 글을 올려보겠습니다. PinLayout의 사용 시점은 레이아웃이 다 잡히는 시점(슈퍼뷰의 위치 및 크기를 알 수 있는 시점)인 viewDidLayoutSubViews(), layoutSubViews()에서 사용해줘야 합니다. 그 이유는 장치 회전 및 컨테이너 크기를 동적으로 조절하기 위해서 위와 같은 시점에..

article thumbnail
[iOS/Swift] 2. FlexLayout 모든 메서드들을 알아보자!
Xcode/Library 2024. 1. 16. 04:07

목차 FlexLayout, PinLayout을 사용해 보자! FlexLayout 모든 메서드들을 알아보자! PinLayout 메서드를 알아보자! (+ ScrollView)! 메서드들도 많고 CSS를 사용해 보지 않아서 그런가 생소한 단어들도 보이네요 ㅠ.ㅠ 뭔가 느낌은 알 것 같은데, 그래도 일단은 한 번씩은 써봐야 이해되겠죠?! 자, 이전 글 의 예제로 시작해 봅시다. import UIKit import FlexLayout import PinLayout class ViewController: UIViewController { private let containerView = UIView() private let label1: UILabel = { let label = UILabel() label.bac..

article thumbnail
[iOS/Swift] 1. FlexLayout, PinLayout을 사용해 보자!
Xcode/Library 2024. 1. 15. 19:09

목차 FlexLayout, PinLayout을 사용해 보자! FlexLayout 모든 메서드들을 알아보자 PinLayout 메서드를 알아보자! (+ ScrollView)! FlexLayout이란? FlexLayout은 CSS의 Flexbox를 영감을 받아서 만들어진 레이아웃 라이브러리라고 합니다. Auto Layout, UIStackView보다 8~12배 정도 렌더링 성능이 빠릅니다. SwiftUI와 마찬가지로 선언형이고 구문 연결(Chain-able)이 가능합니다. 일단, GitHub 문서 를 간단히 살펴보니, Flexbox와 동일한 역할을 하는 Container를 만들어 초기화시켜 주네요. 이 Container는 UIStackView와 비슷하게 동작하는 것 같은데, 같이 한 번 살펴봅시다. PinLa..

article thumbnail
[iOS/Swift] 의존성 주입, 의존성 역전이란?
Xcode 2023. 3. 12. 01:15

의존관계 역전 원칙 (DPI : Dependency inversion principle) 의존관계 역전 원칙은 SOLID의 마지막 원칙으로 상위 모듈이 하위 모듈에게 의존하지 않도록 설계하는 겁니다. 즉, 상위 모듈과 하위 모듈 모두 추상화를 통해 간접적으로 의존하게 만들어야 합니다. 또한, 추상화는 세부 사항(변수, 메서드 등)에 의존해서는 안된다. 세부사항이 추상화를 의존해야 합니다. 참고. 상위, 하위 모듈은 개념적인 용어로 표현하자면, 상위 모듈은 다른 모듈에서 의존하는 모듈을 말합니다. (다른 모듈을 사용하는 모듈) 반면, 하위 모듈은 다른 모듈에 의존되는 모듈을 말합니다. (세부 구현 및 일부 기능을 제공하는 모듈) 의존성(Dependency)이란? 한 객체가 다른 객체에 의존하는 것을 의미합..

article thumbnail
[iOS/Swift] 옵셔널(Optional, ?) 정리
Xcode/Swift 문법 2023. 2. 20. 19:10

Optional이란? Swift에서 안정적인 코드를 작성하기 위해 필요한 매우 중요한 방법 중 하나입니다. Optional은 값이 있을 수도 있고 없을 수도 있는 변수의 데이터 타입입니다. 표현식을 한번 봅시다. var myNumber: Int? = nil 이와 같이 변수를 선언할 때 "?"를 사용하여 Optional을 표현합니다. 이 경우 변수에 값을 할당하지 않으면 기본값으로 nil을 반환하죠. 그러나 보통 앱을 실행하여 nil값이 나오게 되면 에러가 발생합니다. 따라서 해당값에 접근하기 위해 Optional Unwrapping 과정을 거쳐야 합니다. 옵셔널 언래핑(Optional Unwrapping)은 옵셔널의 nil 여부를 확인하고 만약에 값이 있다면 해당값을 사용하는 과정입니다. 이를 통해 n..

article thumbnail
[iOS/Swift] String Format 사용법 (정수, 소수점, 문자열 변환)
Xcode/Swift 문법 2023. 2. 14. 20:26

String Format String(format: String, _ arguments: CVarArg...) format에서는 %d , %f, %@ 이와 같은 기호를 넣어 변형이 가능하며, arguments의 여러 인수들은 $1, $2... 과 같이 취급하여 사용도 가능하다. 정수형 변환 (%d) Int형식을 변환할 때 사용합니다. (오직 정수만 사용가능) let num1 = 123 let num2 = 456 // 변화를 확인하기 위해 []로 구분을 지어줌, 사용 시 [] 제거! String(format: "[%d]", num1) // [123] // 숫자가 범위를 넘어가면 앞에 공백 (왼쪽 정렬) String(format: "[%5d]", num1) // [ 123] // 숫자가 범위를 넘어가면 뒤에..

article thumbnail
[iOS/Swift] addingPercentEncoding (URL이 nil 일 경우, URL Encoding, CharacterSet)
Xcode/Swift 문법 2023. 2. 11. 19:40

addingPercentEncoding 지정된 CharacterSet에 포함되지 않은 문자열을 Percent Endcoing의 문자로 대체하여 새로운 문자열로 반환합니다. 일단 URL 같은 경우 공백이나 한글이 포함되면 리턴값으로 nil이 나오게 되는데요. 이때 Percent Endcoing을 통해 변환시켜 인식이 가능하도록 도와줄 수 있죠. 선언은 아래와 같이 돼있습니다. func addingPercentEncoding(withAllowedCharacters allowedCharacters: CharacterSet) -> String? 여기서 CharacterSet란 유니코드 호환 문자의 집합을 나타냅니다. 여러 문자를 그룹화하여 사용을 편리하게 분류해 놓은 구조체입니다. CharacterSet에서 U..

article thumbnail
[iOS/Swift] URL, URLComponents 빠개기
Xcode/Swift 문법 2023. 2. 11. 15:02

URL URL은 특정 리소스의 위치를 나타냅니다. 보통 Sring을 통하여 접근합니다. 영어나 특수한 문자만 사용이 가능하고 한글이나 공백을 포함 시 리턴값이 nil이 나오게 됩니다. let urlStr = "https://ios-daniel-yang.tistory.com/search?keyword=iOS&page=1" let url = URL(string: urlStr)! 만약 URL에 한글 및 공백이 필요한 경우에는 String.addingPercentEncoding 변환을 통해 사용이 가능한데요. [iOS/Swift] addingPercentEncoding (URL이 nil 일 경우, URL Encoding, CharacterSet) 를 참고해 주세요. 구조 scheme 접근할 방법을 정의해 둔 프..

article thumbnail
[iOS/Swift] 프로토콜 CaseIterable (열거형에서 모든 case를 배열로 다루기)
Xcode/Swift 문법 2023. 2. 9. 00:38

프로토콜 CaseIterable 공식문서 는 이쪽에 있습니다. 설명이 친절하니 한 번은 들어가서 보세요. 일단 결론은 열거형의 각각 모든 case들을 한데 묶어서 컬렉션인 배열로 만들어 줍니다. 각가의 요소를 배열로 바꾸어 준다니 유연하게 사용이 가능해질 거 같네요! 내부 구조를 한번 봅시다. public protocol CaseIterable { /// 타입의 모든 값을 콜렉션(배열로) 나타내는 타입입니다. associatedtype AllCases : Collection = [Self] where Self == Self.AllCases.Element /// 콜렉션(배열)의 모든 값을 나타냅니다. static var allCases: Self.AllCases { get } } 사용하는 곳을 열거형이라 ..

article thumbnail
[iOS/Swift] 이니셜라이저(init)와 고차함수
Xcode/Swift 문법 2023. 2. 8. 06:05

이니셜라이저 예제 아직 다루지 않은 이니셜라이저 관련 내용인데 몰랐던 내용을 예제와 함께 간단히 써볼게요. init 사용 및 고차함수 관련 내용입니다. 신기방기합니다. 문법은 다음기회에... 정리해서 올릴게요 오늘부터 저는 커피 장사를 하고 있습니다. 일단 장사를 하기 앞서 커피 메뉴판을 만들어 줬어요. struct Menu { let coffee: String let size: String } 메뉴도 만들었으니 손님 이름과 함께 주문을 받아야겠죠? struct CoffeeOrder { let name: String let order: Menu } 그런데 갑자기 손님이 들이닥쳐서 많은 주문을 처리하기 힘들어서 한눈에 보기 위해 주문 리스트도 만들어 줬어요. struct CoffeeOrderList { l..

반응형