masksToBounds 와 clipsToBounds 차이 먼저 이 두 메서드는 같은 기능을 한다. 하지만 다른 곳에서 불러온다! label.layer.masksToBounds label.clipsToBounds masksToBounds 는 CALayer 의 프로퍼티입니다. (CALayer 는 이미지 기반 content 를 관리하고 content 의 애니메이션을 수행할 수 있는 object) clipsToBounds 는 UIView 의 프로퍼티입니다. masksToBounds 하위 레이어가 레이어 경계까지 잘리는 여부를 결정. true 로 설정 시 레이어의 경계를 일치시키고 모서리 반경(corner radius) 를 포함 하는 암시적인 clipping mask 를 만든다.(default 는 false) ..
Core Data custom class 를 설정해보고 relationship 을 활용해서 관계형 데이터베이스화 해보자. 미리 밝힌다. 관계형 데이터베이스를 이용해서 구성하는 것이 올바른 설계지만 커스텀 클래스를 써보고자 했기 때문에 사용해보았다. 결국 릴레이션쉽을 설정해주었다. Core Data custom class 상황 각 이야기에 해당하는 글이 존재하고 pageIndex 에 따라서 뷰컨에 이야기와 해당 글을 뿌려주고 싶었다... 위와 같이 entity 를 두개를 만들고 StroyList 의 story attribute 에 custom class 로 StoryModel 배열을 넣어주었다. StoryModel : 타이틀, 디테일, 날짜 정보를 가지는 "이야기" 하나에 들어가는 "글" 이다. Story..
서버 push 알림을 구현해보자 APNsTutorial-iOS 🤨 Apple Push Notification service tutorial 단순히 순서를 따라서 가면 될 줄 알았는데 알아야할 것도 있었고 경우에 따라서 요구하는 파일도 달랐다. 그렇기 때문에 천천히 인내심을 가지고 읽어주면 고맙겠습니다! 먼저 어떤 서버 환경에서 푸쉬알림을 보내줄 건지 그렇다면 server provider 가 요구하는 파일은 무엇인지 알고 진행하기를 바랍니다. p8(인증키) ,p12(인증서) 파일 모두 만드는 방법을 정리했다. APNs 키는(p8) 계정당 2개까지만 만들 수 있어서 나는 못만들어봤고 출처를 참고했다. (참고로 p8(인증키)은 인증갱신을 하지 않아도 되기 때문에 p12(인증서)보다 선호한다. 파이어베이스에서는..
User Defaults vs Core Data 좋은 자료를 찾아서 해석해봤습니다 데이터를 저장한다는 것을 제외하고는 persistence solution 이 전혀 다른 User Defautls 와 Core Data! 🤨 User Defaults 는 언제 사용하나요? 설정이나 사용자의 기본 설정과 같은 데이터의 small data chunks 를 저장하는 데 이상적이다. property list 또는 plist 로 디스크에 저장된다. property list 와 plist 는 XML 파일 형태이다. UserDefaults 클래스는 성능 향상을 위해서 런타임에 메모리에 내용을 저장한다. key-value 저장소일뿐이다. 이렇게하면 쉽게 액세스할 수 있지만 key-value pairs 가 서로 명시적 관계가..
Date 로 날짜 다루기 Date() 를 저장해서 사용 .dateComponents 사용해봤다 하지만 역시 불편하다 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: "StoryTVC") as? StoryTVC else { return UITableViewCell() } let month = Calendar.current.dateComponents([.month], from: storyList[indexPath.row].date ?? Date()).month let day..
Moya BandAPI import Foundation import Moya class BandAPI { static let shared = BandAPI() static let provider = MoyaProvider() func getBands(completion: @escaping ([Band]) -> ()) { BandAPI.provider.request(.bands) { response in switch response { case .success(let result): do { let results = try JSONDecoder().decode(BandlistDataModel.self, from: result.data) completion(results.band) print(results...
- urlsession
- containerBackground
- MOYA
- projectsetting
- 서버통신
- IOS
- rxswift
- WWDC22
- Objective-C
- APNS
- Swift
- CloneCoding
- Widget
- configurable widget
- github
- watchOS
- WWDC
- Algorithm
- Protocol
- SwiftUI
- WidgetKit
- RxCocoa
- Firebase
- 2022 KAKAO TECH INTERNSHIP
- YPImagePicker
- MVVM
- Notification
- UserDefaults
- OpenSourceLibrary
- async/await
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday