| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 옵저버패턴
- 커맨드패턴
- 어댑터패턴
- 상태패턴
- ios
- WKWebView
- 스트래터지패턴
- DispatchQueue
- RxSwift
- 컴파운드패턴
- 템플릿메서드
- Xcode
- 스테이트패턴
- 컴포지트패턴
- Mobile
- 팩토리메서드패턴
- 파사드패턴
- SWIFT
- 전략패턴
- 데코레이터패턴
- 이터레이터패턴
- 디자인패턴
- cocoapods
- unowned
- SwiftUI
- 싱글턴패턴
- Scenedelegate
- ViewController
- 추상팩토리패턴
- 프록시패턴
- Today
- Total
목록전체 글 (67)
ios dev kangwook.
기존 rx에서 제스쳐에 대한 부분을 쓰다가 Combine으로 전체적으로 넘어가면서, Combine에서도 쓸 수 있게 만들고 싶었다..그래서 좀 찾아보다가 헬퍼 메소드를 만들어야겠다는 생각이 들어서 만들었는데, 꽤나 유용함.기본적으로 rx gesture나 rx에서 tap gesture를 처리하기 위해 쓰던 rx.event.bind { ... } 같은 부분들에 대해 Combine에서 범용적으로 쓰기 위해 만들었다.import UIKitimport Combineextension UIControl { func publisher(for events: UIControl.Event) -> AnyPublisher { UIControlPublisher(control: self, events: event..
WWDC 2025 Notes목차개요플랫폼별 주요 업데이트iOS 26iPadOS 26macOS 26 (Tahoe)watchOS 26visionOS 26tvOS 26프레임워크 및 기술 분야별 심층 분석SwiftUI & UIKitSwift 6.2Core ML & Apple IntelligenceMetal 4 & 그래픽 기술ARKit / RealityKit / SceneKit네트워킹 & 통신부록 및 출처1. 개요WWDC 2025에서는 iOS, iPadOS, macOS, watchOS, visionOS, tvOS 전반에 걸쳐 버전 26으로 통합된 업데이트가 발표되었으며, 이와 함께 Xcode 26, Swift 6.2 개선, 신규 프레임워크 도입, 디자인 시스템 혁신 등 다양한 변화가 공개되었습니다.본 문서는 각 ..
UI 작업을 하다보면 shadow와 border, cornerRadius 작업을 해야하는 경우가 종종 있다.그런데 예를 들어 StackView의 경우 기본적으로 shadow를 넣을 수 없고 일반적인 뷰에 shadow를 적용하려고 해도 복잡해서 항상 찾아보게 되는 이런 상황이 싫어서 정리해보고자 한다.가장 먼저 Shadow를 적용하는 Extension 함수 만들기가장 고질적인 문제인 Shadow를 적용하는 방법을 가장 쉽게 하기 위해 CALayer Extension에 새로운 함수를 정의해준다.기본적인 함수 외형은 https://baechukim.tistory.com/112 [iOS] swift shadow 그림자 적용 (x, y, blur, spread) feat. Zeplin제플린 등에서 제공하는 그림자..
일을 하다보면, 그러니까 점점 비대해지는 이 프로젝트를 보고 있자면 가끔씩 갑갑한 마음이 들 때가 있다.그럴 때 마다 아 좀 더 유연하게 코드를 짤 수 없을까 라는 생각이 들기 마련이고 이럴 때 활용할 수 있는게 바로 프로토콜이 되겠다.나도 완전히 능숙하게 사용하지는 못하지만, 최대한 protocol을 활용하려고 노력 중이고, 왜 강력한 도구인지 소개하려고 한다.일단 Swift에서 기본적으로 제공하는 프로토콜들을 한 번 살펴보자EquatableEquatable 프로토콜은 두 인스턴스를 비교할 수 있도록 한다. == 연산자를 사용해서 두 객체가 같은지 비교할 때 사용한다. 직접 정의한 Classsk Struct에 Equatable 프로토콜을 추가하면, 해당 타입의 인스턴스들을 비교하는 로직을 구현할 수 ..
오늘은 저번에 이어서 UIKit 관련된 Extensions를 좀 활용해볼까 한다.은근 유용한 함수들이 많으니 응용해서 잘 써보도록 하자1. UILabel일단 소개하기에 앞서, 텍스트를 강조하기 위한 EmphasizedText라는 구조체를 만들었다.struct EmphasizedText { var text: String var font: UIFont var color: UIColor}이 EmphasizedText는 text와 font, color라는 property를 가지고 있고 이를 활용해 라벨의 Text를 조정할 예정이다.먼저 applyEmphasizedText라는 함수이다.extension UILabel { func applyEmphasizedText(fullText: Strin..
오늘은 업무하면서 Extension으로 선언해서 편리하게 사용했던 함수들을 소개해보려고 한다.1. Arrayextension Array where Element: Equatable { mutating func removeObject(obj: T) where T: Equatable { self = self.filter({ $0 as? T != obj }) }}말그대로 배열 내의 object를 지우는 기능이다.꽤나 편리하게 사용했던 기능 중 하나인데, 다만 중복되어 있어도 모든 object를 지우는 점만 유의하면 된다. 개꿀임 extension Array where Element: Equatable { mutating func removeDuplicates() { ..
라이센스 명시를 위해 작업을 하던 중, 앱 내에서가 아니라 앱의 설정부분에서 명시해주는 앱들이 있는걸 알게 되었다.해당 방법을 통해 좀 더 편리하고 깔끔하게 라이센스를 표시할 수 있으며, 효율적으로 관리할 수 있기에 방법을 소개하려고 한다!https://github.com/mono0926/LicensePlist일단 오늘 사용할 라이브러리는 LicensePlist로, Cocoapods 나 Carthage로 관리하는 라이브러리들의 라이센스 리스트를 추출해서 보여주는 라이브러리다.해당 라이브러리는 Cocoapods으로도 설치해서 실행할 수도 있지만, 난 그냥 homebrew를 통해 설치했다. brew install licenseplist 먼저 설치를 하고..내 프로젝트 경로로 이동해서 터미널에서 아래 명령어를..
이번에 Pod들의 전체적인 업데이트를 하면서 Alamofire의 메이저버전을 올리게 되었다. 그러면서 자연스럽게 오류가 생기고 이에 따른 문제를 해결하는 과정을 기록해보려고 한다. 첫 번째로, 기존의 Session Manager의 변경 부분이다. Network Request를 하기 위한 NetworkManager가 존재하는데, 코드는 다음과 같이 구성되어 있었다. (Alamofire 4) class NetworkManager { static let sharedInstance = NetworkManager() let manager: Alamofire.SessionManager = { let serverTrustPolicies: [String: ServerTrustPolicy] = [ liveDomainUR..