일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Modality
- NotificationCenter
- 아이폰
- NumberFormatter
- SWIFT
- roundingMode
- IOS
- 독후감
- SWIFTUI
- 스타트업주니어로살아남기
- 책후기
- Info.plist
- Codegen
- UIResponder
- Failed to register bundle identifier
- View Life Cycle
- viewcontroller
- delegation
- human interface guidelines
- 스위프트
- Navigation
- Mock
- contentInset
- 부트캠프
- mvvm
- Structures and Classes
- 야곰아카데미
- xcode
- 독서후기
- @available
- Today
- Total
목록전체 글 (145)
호댕의 iOS 개발
DateFormatter의 비용이 크다는 피드백을 받게 됐다. 사실 DateFormatter를 사용하면서 크게 고려하지 않던 부분이었는데 이번 계기로 찾아보게 됐다. 그래서 다음과 같은 참고 자료들을 찾을 수 있었다. https://sarunw.com/posts/how-expensive-is-dateformatter/ How expensive is DateFormatter | Sarunw If you are working on iOS for long enough, there is a chance that you might have known that DateFormatter is expensive, but what is costly about DateFormatter? Let's find out in t..

프로젝트를 진행하다보면 종종 키보드를 활성화했을 때 키보드 때문에 뒤에 있는 컨텐츠의 일부가 아예 보이지 않는 문제가 발생하곤 한다. 화면 위에 키보드가 활성화되어 아무리 뒤에 있는 View를 스크롤 하더라도 보이지 않는다... 😱 이는 사용자가 자신이 작성한 내용을 확인할 수 없기 때문에 사용자 경험을 매우 안 좋게 하는 요인이라고 생각한다. 그렇다면 이럴 땐 어떻게 해야할까? 일단 이 때는 키보드의 높이만큼 컨텐츠가 위로 올라가야 하지 않을까? 라고 생각하고 방법을 찾아보았다. 그 전에 키보드가 활성화되었고, 키보드가 비활성화되는지 알 수 있는 방법이 필요했다. 이는 이미 만들어져 있는 Notification Center를 사용하면 해결됐다. 내가 사용한 것은 UIResponder에 있는 타입 프로퍼..

어제에 이어 미처 포스팅하지 못했던 TWL을 업로드한다. 이 주는 주로 프로젝트를 진행하며 새롭게 알게 된 내용들이 많았다. 그럼 어떤 내용들이 있었는지 살펴보자. UIRefreshController Apple Developer Documentation developer.apple.com 대부분의 앱들을 보면 화면 가장 상단에서 화면 아래로 드래그를 했다가 손을 떼면 다시 데이터가 리로드되면서 리로드가 되는 표시가 나온다. @objc private func handleRefrashControl() { reloadData() let scrollView = view as? UIScrollView DispatchQueue.main.async { scrollView?.refreshControl?.endRefre..

TWL을 블로그에 포스팅 하는 것이 늦어져서 지금에서야 미리 작성해놓았던 TWL을 포스팅한다... 늦지 않게 꼬박꼬박 포스팅해야겠다. 항상 꾸준하게!!! 그럼 이때는 뭘 배웠는지 정리해보자!! 슬기로운 Reuse Identifier 사용 방법 TableView나 CollectionView에서 Cell을 Register할 때나 dequeueReusableCell을 할 때 항상 reusable Identifier를 사용하게 된다. 이는 물론 String으로 작성해줄 수 있지만 이렇게 할 경우 기억하기도 쉽지 않고 하드코딩을 하게 된다. 따라서 이를 방지하기 위해 이렇게 작성해줄 수 있다. protocol ReusableView: NSObject { static var reuseIdentifier: Strin..

TextField는 기본적으로 만들게 되면 테두리가 존재한다. 이런 식으로 말이다. (참고로 상품 설명의 경우 TextView를 통해 구현했다) 하지만 만약 해당 텍스트 필드에 작성한 내용이 특정 조건을 충족하지 못할 경우 빨간 선으로 테두리를 그리고 싶으면 어떻게 해야할까? 코드는 아주 간단하지만 헤멨던 것이 있어 작성해본다. 일단 코드 먼저 살펴보면 다음과 같다. textField.layer.borderColor = UIColor.systemRed.cgColor textField.layer.cornerRadius = 5 textField.layer.borderWidth = 0.5 코드는 아주 간단하다. 하지만 여기서 textField.layer.borderWidth = 0.5 이 코드가 없다면? 당연..

야곰 아카데미 불타는 토요 스터디에서 진행한 Keychain 관련 공부입니다. 🔐 Keychain은 뭘까? 참고문서: https://developer.apple.com/documentation/security/keychain_services 일단 Keychain은 사용자 대신 작은 단위의 데이터를 안전하게 저장하는 공간을 의미한다. 여기서 작은 단위의 데이터는 인증서, 비밀번호, 인적사항 등의 데이터를 말한다. 이때 keychain service API는 키체인이라는 암호화된 데이터베이스에 사용자의 데이터를 저장하는 매커니즘을 가지고 있다. 단 iOS에서는 하나의 디바이스에 하나의 keychain만 존재하며 번들 단위(앱 단위)로 keychain을 관리하게 되며, MacOS에선 임의로 키체인을 생성할 수..

알고리즘 문제를 풀다가 for 문을 거꾸로 돌아야 하는 상황이 있었다. 물론 배열에서 for 문을 돈다면 배열에 .reversed()를 하여 for 문을 돌리면 됐지만 문제는 단순히 특정 범위를 돌아야 할 때였다. 나는 1부터 for문을 돌리고 싶은 것이 아니라.. 마지막 숫자부터 1까지를 돌리고 싶었다... 내가 마주한 문제는 다음과 같다. 초등학교 때(?) 배웠던 최대공약수와 최소공배수를 구하는 문제였는데 구하는 것은 간단했지만 막상 코드로 분기를 하려니... 마냥 쉽지만은 않았다. 이때 만약 m이 n으로 나뉘지 않는다면 n부터 1까지 내려가면서 나눠지는 값이 있는지 찾아야 했다. 이때 1부터 올라가면서 하게 된다면 공약수를 찾을 순 있지만 최대 공약수는 찾을 수 없는 문제가 있었다. 그렇다면 이때 ..

캡쳐를 할 수 있는 도구나 gif 편집 도구를 보면 다음과 같은 것들을 볼 수 있다. 위 사진처럼 이미지를 자르지 않고 비율 그대로 이미지의 크기만 줄이고 싶다면 어떻게 해야할까? 일단 코드를 먼저 살펴보자. extension UIImage { func resize(multiplier: CGFloat) -> UIImage { let newWidth = self.size.width * multiplier let newheight = self.size.height * multiplier let size = CGSize(width: newWidth, height: newheight) let render = UIGraphicsImageRenderer(size: size) let renderImage = rend..