일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- dynamic height
- 티스토리챌린지
- Xcode
- 정보처리기사 실기 요약본
- 정보처리기사 실기
- 위클리챌린지
- RealmSwift
- pbxfilesystemsynchronizedrootgroup
- Pod
- JSONSerialization
- UITableView
- storybaord
- Custom PageViewController
- SwiftGen
- Codable
- parse
- CustomCode
- IOS
- pbxgroup
- cocoapods
- Decodable
- PageViewController
- JSON
- JSONParser
- programmers
- swift
- 프로그래머스
- 정보처리기사
- 2018 KAKAO BLIND RECRUITMENT
- issecuretextentry
- Today
- Total
목록iOS/Swift (10)
iOS 개발일기
회사에서 추후 필요할 수도 있는 기능 중 하나로 화면 캡처 방지에 대한 이야기를 했었는데, iOS는 캡처(녹화)나 스크린 샷에 대한 감지를 할 수는 있지만 AOS처럼 공식적으로 기능을 제공하지 않는 것으로 알고 있었다.캡처와 스크린 샷의 감지는 NotificationCenter의 알림들을 통해 쉽게 감지할 수 있지만 방지에 대한 제어는 제한적이다. 방지를 하기 위해서는 UITextField의 `isSecureTextEntry`의 속성을 이용하여 커스텀하여 가능하다. 화면 캡처 및 스크린 샷 감지 방법캡처(녹화) 감지 캡처의 경우 `UIScreen.capturedDidChangeNotification` 알림을 이벤트로 추가하여 감지할 수 있다. 그리고 `UIScreen.main.isCaptured` 프로..
기존에는 동적 높이를 할당할 때에 모든 UI 요소들에 제약조건을 모두 상위 뷰에 맞춰 크기가 같이 커지도록 설정된 셀만 사용했었으나, 이번 프로젝트에서 각각의 셀은 동적인 높이를 가지지만 UI 요소 중 타이틀과 버튼의 크기는 고정 크기를 가지고 유지되면서 중앙의 UILabel만 높이가 동적으로 변하도록 구성해야 됐다. AutoLayout 기반으로 UI를 코드로 작성하면서 높이를 지정해주는 상황이 적다보니 생소한 부분이기도 했고단순하게 셀의 높이를 `UITableView.automaticDimension` 으로 설정한 후에 셀 내에 타이틀과 버튼에 최소 크기를 명시해주기만 하면 속성에서 자동으로 최소 크기를 따라가지 않을까? 라는 생각에 타이틀과 버튼에 최소 크기를 지정한 결과... 셀 내에 Frame..
func tableView( _ tableView: UITableView, didSelectRowAt indexPath: IndexPath ) { ... } func collectionView( _ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath ) { ... } 위 두 함수가 호출되지 않는 이유 1. delegate를 설정해주지 않았을 경우 tableView.delegate = self collectionView.delegate = self 위 같은 방법은 단순한 방법이라 실수를 했을 경우가 많을 것 같네요. 2. tableView 또는 collectionView의 상위 뷰가 'tapGesture'를 가지고 있는 경우' 이 ..
기존 PageViewController를 사용한 방법이 아닌 UICollectionView를 이용하여 PageViewController를 구현해보았습니다. import UIKit class PageViewController: UIViewController { var indicatorConstraint: NSLayoutConstraint? var indicatorView: UIView! var naviCollection: UICollectionView! var pageCollection: UICollectionView! override func viewDidLoad() { super.viewDidLoad() setupControls() setupLayout() initData() } private func..
오늘은 JSON 파싱 방법 중 하나인 JSONSerialization에 대해서 알아보겠습니다. JSONSerialization은 Decodable에 비해 제약이 심하지 않죠.그렇지만 Decodable이 워낙 간단하게 구현할 수 있는지라... 기본적인 JSONSerialization먼저 문자열을 하나 선언해주겠습니다.let jsonString = """ { "user_id" : 0, "user_name" : "hoon", "user_age" : 30 } """ 그 다음 JSONSerialization을 해보도록..
전편 [Swift] JSONParser - Decodable(1) Swift에서 JSON 파싱을 위한 방법에는 JSONSerialization Decodable 이 두가지 방법이 있습니다. 오늘은 Decodable을 이용하여 JSON 파싱을 하는 방법에 대해서 알아보겠습니다. 먼저 파싱에 필요한 예제 데이 93bpm.tistory.com 이번 편에서는 Decodable에 대한 이해도를 조금 더 높힐 수 있는 시간을 가져보겠습니다. Decodable은 사용하는 방법이 편하지만 생각보다 제약이 많기 때문에 정확하게 이해하고 사용해야합니다. 간단한 형식이라면 문제없이 사용할 수 있겠지만 언제나 간단한 파싱만 하지않는 법이죠...허허 어떠한 상황에서 에러가 나는지 어떻게 대처해야되는지 몇 가지 알아보도록 하겠..
Swift에서 JSON 파싱을 위한 방법에는 JSONSerialization Decodable 이 두가지 방법이 있습니다. 오늘은 Decodable을 이용하여 JSON 파싱을 하는 방법에 대해서 알아보겠습니다. 먼저 파싱에 필요한 예제 데이터를 만들어줍시다. JSON String Example let jsonString = """ [ { "user_id" : 1, "user_name" : "hoon", "user_age" : 28 }, { "user_id" : 2, "user_name" : "joon", "user_age" : 30 }, { "user_id" : 3, "user_name" : "min", "user_age" : 32 } ] """ Decodable을 사용하기 위해서는 Struct 또는 C..
iOS 15 업데이트 이후, navigationController에서 barTintColor 적용이 제대로 이루어지지 않아 iOS15에서 색이 적용되지 않아 투명한 네비게이션바가 보이는 현상이 발견되어 이 문제를 해결하는 방법을 찾아봤습니다. in AppDelegate didFinishLaunchingWithOptions if #available(iOS 15.0, *) { //or (iOS 13.0, *) let appearance = UINavigationBarAppearance() appearance.backgroundColor = .myColor UINavigationBar.appearance().standardAppearance = appearance UINavigationBar.appearanc..
스위프트에서는 URL에 한글또는 특수문자가 포함되면 인코딩을 통해서 값을 변환한 다음 보내주어야 합니다. 한글을 변환하는데 도움을 주는 함수가 addingPercentEncoding() 입니다. 한글만 사용하게 된다면 문제가 없지만 특수문자도 같이 사용하게 된다면 이야기가 달라집니다. 예를 들어, let text: String = "@# $&'" test.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) 이 결과를 프린트 해본다면 %ED%8A%B9%EC%88%98%20%EB%AC%B8%EC%9E%90%3A%20@%23%20$&\' @#과 공백은 변환되지만 $&'은 같은 특수문자인데도 변환이 되지 않는 것을 확인할 수 있습니다. 이렇게 된다면 통..
개발환경macOSCatalina 10.15.4Xcode11.4iOS13.4 (Simulator : iPhone 11 Pro) 몇달 전에 여느 때와 다름없이 새 프로젝트를 켜고 AppDelegate로 들어가서 커스텀 코딩으로 rootViewController를 설정하려고 보니 SceneDelegate라는 녀석이 새로 생겨서 당황했었던 것이 기억난다.(나는 초보 개발자여서 업데이트 노트를 일일히 보지않았기 때문에...) 여튼 처음에는 무시하고 AppDelegate에다가 커스텀 코딩을 했었는데 역시나 에러가 주구장창떠서 살펴보니 Xcode11버전으로 업데이트 되면서 생긴 SceneDelegate에서 코딩을 해주어야 하고 Storyboard를 삭제해주어야 했다. 그래서 유지보수를 하다가 나중에 새 프로젝트를 만..