일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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외부카메라연결
- Decodable
- Pod
- JSON
- cocoapods
- parse
- JSONParser
- ios외부디바이스연결
- CustomCode
- 2018 KAKAO BLIND RECRUITMENT
- programmers
- 프로그래머스
- ios캡처방지
- Codable
- Xcode
- UITableView
- avcapturesession
- ios캡처감지
- 정보처리기사 실기
- 외부카메라감지
- 정보처리기사 실기 요약본
- 위클리챌린지
- swift
- AVFoundation
- usb카메라연결
- 카메라유선연결
- ios카메라유선연결
- cancelstouchesinview
- IOS
- 정보처리기사
- Today
- Total
목록iOS/Swift (9)
iOS 개발일기
프로젝트에서 웹 서비스 통신을 할 때 몇 개의 값들이 필수로 존재해야 되는 경우가 존재했었다.이럴 때마다 입력을 하거나 초기화에 값을 넣어주기에는 너무 불편한 것 같아서 생각을 하던 찰나에 생각하게 된 것이 Property Wrapper(프로퍼티 래퍼)였다. Swift 5.1에서 Property Wrapper가 나왔을 때에는 SwiftUI에서는 자주 사용될 것 같았지만 UIKit에서는 자주 사용되지 않을 것이라 생각했었다. 현재까지 개발한 프로젝트는 모두 UIKit 환경에서 개발되었기 때문에 Property Wrapper를 적극적으로 사용할 기회가 별로 없었는데 이번 기회에 사용할 기회가 있어 어떻게 사용했는지 적어보고자 한다. UserDefaultsUIKit 환경에서 Property Wrapper를 ..

기존에는 동적 높이를 할당할 때에 모든 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$&\' @#과 공백은 변환되지만 $&'은 같은 특수문자인데도 변환이 되지 않는 것을 확인할 수 있습니다. 이렇게 된다면 통..