ScrollViewDelegate란
iOS 앱 개발에서 스크롤 인터랙션은 사용자 경험의 핵심 요소입니다. UIScrollViewDelegate는 스크롤 뷰의 다양한 동작을 감지하고 제어할 수 있게 해주는 강력한 프로토콜입니다. 이 글에서는 ScrollViewDelegate의 핵심 개념부터 실제 구현까지 상세하게 다루어보겠습니다. ScrollViewDelegate란? UIScrollVi...
iOS 앱 개발에서 스크롤 인터랙션은 사용자 경험의 핵심 요소입니다. UIScrollViewDelegate는 스크롤 뷰의 다양한 동작을 감지하고 제어할 수 있게 해주는 강력한 프로토콜입니다. 이 글에서는 ScrollViewDelegate의 핵심 개념부터 실제 구현까지 상세하게 다루어보겠습니다. ScrollViewDelegate란? UIScrollVi...
Node 구조체의 멤버변수 Property의 타입이 제네릭이어서 로 했으나 서버에서 응답된 json은 제네릭 타입으로 변경 불가능. → 노션 속성의 다양한 타입을 서버에서 어떤 속성이든 한가지 형태의 객체로 재구조화하여 대응. Node struct의 멤버변수도 서버에서 정의한 객체의 형태로 변경하여 디코딩 가능하도록 변경. Node...
Swift .self 완벽 가이드: 타입과 인스턴스를 값으로 다루기 소개 Swift에서 타입이나 인스턴스를 값으로 사용해야 하는 상황이 있습니다. 이때 .self 표현을 사용하여 타입 자체나 인스턴스 자체를 값으로 전달할 수 있습니다. 이 글에서는 .self의 정확한 사용법과 실제 활용 예시를 알아보겠습니다. 1. 타입을 값으로 사용할 때 (메타...
앱의 특정 URL을 통해 실행될 수 있도록 하는 기능 웹 페이지, 다른 앱에서 URL을 호출하면 해당 URL을 처리할 수 있는 앱이 자동으로 열림. 1. 앱 스키마 구조 myapp://auth/callback?success=true myapp:// : 앱에서 설정한 Custom URL Scheme auth/callback : 특정 ...
애플의 인증 관련 프레임워크 OAuth 2.0, Sign in with Apple, 패스키 등 인증 관련 기능을 제공 ASWebAuthenticationSession이 포함되어 있음. ASWebAuthenticationSession 앱 내에서 OAuth 인증을 수행하는 클래스 웹브라우저 기반으로 로그인 처리 로그인 후 앱으...
1. 문제 발생 상황 present(_:animated:completion:) 메서드를 호출했을 때 “Cannot find ‘present’ in scope” 오류가 발생함. 2. 원인 분석 2.1 present는 UIViewController의 인스턴스 메서드 present 메서드는 UIViewController 내부에서만 호출 가능함....
중첩 배열을 한 배열로 평평하게 만들거나, 옵셔널 배열을 변환 1. 중첩 배열을 평탄화 let nestedArray = [[1, 2, 3], [4, 5], [6, 7, 8]] let flatArray = nestedArray.flatMap { $0 } print(flatArray) // 출력: [1, 2, 3, 4, 5, 6, 7, 8]
CAShapeLayer는 벡터 기반의 경로(path)를 그릴 수 있는 CALayer의 서브클래스이다. Core Graphics (CGPath)를 사용하여 선, 도형, 곡선 등을 그릴 수 있음 애니메이션을 추가하여 동적으로 변화하는 UI를 만들기 용이 비트맵(UIImageView)보다 성능이 뛰어나며, GPU를 활용하여 렌더링 성능이 우수...
nil인지 먼저 확인하고 nil이면 return하거나 다른 동작을 수행하는 방식 1. 옵셔널 바인딩 func greet(name: String?) { guard let unwrappedName = name else { print("이름이 없습니다.") return } print("안녕하세요, \(u...
배열의 요소 중 특정 조건을 만족하는 요소만 걸러서 새로운 배열을 생성하는 메서드 1. 짝수만 필터링하기 let numbers = [1,2,3,4,5,6,7] let evenNumbers = numbers.filter { $0 % 2 == 0 } 2. 특정 문자열이 포함된 요소만 필터링하기 let fruits = ["apple", "ban...