본문 바로가기

모바일앱/iOS91

UIKit에서 SwiftUI의 Preview를 사용하는 방법 "TIL221031: How to use Preview in UIKit" 앱개발을 하는 중 UI작업을 할 때, 시각적으로 확인을 해야하는 경우가 생긴다. 물론 소규모의 앱이나 작업에서는 매번 빌드하는 것이 나쁘지않지만, 해당 페이지가 세부적인 항목이라 여러번 클릭하고 대기하고 심지어는 빌드시간이 오래걸린다면.. 우리는 많은 스트레스를 받게된다. 실제로 회사에서 빌드하는데 정말 많은 시간을 보내고, 그때마다 흐름이 끊기는 것을 경험한다. 이를 해결하기위해 여러 방면을 찾아보았다. 첫번째 방법은 SwiftUI의 Preview를 사용하는 방법이다. 하지만 단점은 SwiftUI를 사용해야 해당 기능을 킬수 있다는 것이었다. 아직 나의 작업환경이 구버전이기 때문에 대부분 UIKit 혹은 Objc라 엄두를 못내고 .. 2022. 10. 31.
타임스탬프 다루기 스위프트로 코딩할 때 가끔 서버와의 통신 등을 이유로 유닉스 타임스탬프를 사용해야 할 때가 있습니다. 그런데 스위프트에서는 기본적으로 유닉스 타임스탬프 값을 얻는 방법을 제공하고 있지 않습니다. 따라서 이번 포스팅에서는 이를 간단하게 익스텐션으로 구현하는 방법에 대해 알아보겠습니다. 유닉스 타임스탬프(Unix Timestamp) 구현하기에 앞서 유닉스 타임스탬프에 대해 간단히 알아보겠습니다. 유닉스 타임스탬프란, 1970년 1월 1일 0시(UTC)를 기점으로 현재까지의 경과 시간을 초 단위로 환산하여 나타낸 값입니다. 예를 들어 2020년 1월 1일 0시(UTC)는 유닉스 시간으로 1577836800으로 표기합니다. 구현 방법 Date의 익스텐션에 프로퍼티 혹은 스태틱 프로퍼티를 추가함으로써 간단히 구현.. 2022. 9. 14.
UILabel 코드로 만들기 TIL_220529_UILabel CodeProgramming class MainViewController: UIViewController { let titleLabel: UILabel = { let label = UILabel() label.textColor = .black label.textAlignment = .center label.text = "메인화면" label.font = UIFont.boldSystemFont(ofSize: 70) return label }() // 뷰가 생성되었을때 override func viewDidLoad() { super.viewDidLoad() self.titleLabel.translatesAutoresizingMaskIntoConstraints = false .. 2022. 5. 29.
(Xcode) pragma mark 주석 사용법 주석사용법 Xcode 주석사용법 과거 Obejctive - C로 앱을 만들 때에는 #pragma mark - 라는 주석을 사용했어요. 그게 Swift로 바뀌면서 이제는 MARK 라는 주석으로 바뀌었습니다. 이를 포함해 Swift에서 사용하는 주석은 아래와 같습니다 // MARK : 설명 // TODO : 할일 // FIXME : 고쳐야 할 부분 // !!! : rudrh // ??? : 의문점 메서드 리스트 Xcode에서 상단에 있는 메서드리스트를 클릭해보면 주석처리한 부분과 메서드를 구분해 놓은것을 볼 수 있어요. 아울러 아이콘 모양도 살짝 달라요. MARK: 설명모양의 아이콘이 표시돼요 TODO : 투두리스트 모양의 아이콘 FIXME: 반창고 모양의 아이콘 Ex : Extension M : Metho.. 2022. 5. 28.
(ios) UIColor와 CgColor의 차이점 설명 🍊 CGColor 색상(color)을 해석하는 방법이 명시되어있는 색상 공간(color space)이 있는,색상(color)을 정의하는 요소의 집합입니다 Color는 코어그래픽스(CoreGraphics)프레임워크와 연결되어있어 앞에 CG가 붙었어요. 이 밖에도 CGRect, CGSize, CGPoint 도 CG의 데이터타입이에요. ios 에서 그려주는 것은 모두 코어그래픽스 프레임워크가 담당합니다 코어그래픽스 프로그래밍 가이드 https://developer.apple.com/documentation/coregraphics 코어그래픽스 개념, 메소드 등 https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/.. 2022. 5. 25.
iOS 날짜정보를 불러와서 비교하기 현재 날짜 불러오기 let current = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" let currentDate = formatter.string(from: current).components(separatedBy: "-") 숫자형으로 만들어 사용하기 let current = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" // Date형태에서 String형태로 전환 let currentDate = formatter.string(from: current).components(separatedBy: "-") // String형태.. 2022. 5. 18.
텍스트인코딩에 관하여 텍스트인코딩에 관하여 우리가 URL 통신을 할때에는 String이 아닌 URL형태를 가지고 통신을 합니다. URL은 String 형식을 URL형식으로 변환하는 과정을 통해 만들 수 있는데 이 과정속에는 아래의 검증과정이 포함되어있는 것을 볼 수 있어요 addingPercentEncoding 이 함수는 지정된 Set에 없는 모든 문자를 백분율로 인코딩된 문자로 바꾸어 새로운 문자열을 반환해주는 함수에요. 이때 withAllowedCharacters의 파라미터로 들어가는 Set 요소들을 제외하고는 모두 아래처럼 퍼센트로 인코딩된 문자로 출력됩니다 예시 1 let urlStr = "www.naver.com/search?location=명동" guard let encodedStr = urlStr.addingPe.. 2022. 5. 18.
오토레이아웃 뽀개기 이번 공부는 정대리님의 오토레이아웃 셀프사이징 유튜브 영상을 토대로 정리했습니다. 출처: https://www.youtube.com/watch?v=RsulV-KCtss 오토레이아웃의 개념 레이아웃을 자동으로 계산 뷰의 위치 : 앵커로 제공 가로 → X축 세로 → Y축 뷰의 크기 : 스크린사이즈를 기반으로 뷰의 크기 제공가능 width height Constraint First item: X를 Second item: Y로 conflicting Constraint 오토레이아웃시 UI에 서로 충돌하는 Constraint를 넣어줄 경우, 좌우 앵커가 우선이 된다. Constraint를 지워도 되고, 빨간 버튼을 눌러서 충돌하는 값을 선택해도 지워진다. 스토리보드에서 복제하기 필요한 것을 클릭하고 option⌥ .. 2022. 5. 14.
iOS 키보드 타입을 더이상 찾아해매지말자. 서론 텍스트필드를 생성하고 해당작업을 테스트를 하다보면 사용자가 해야하는 작업을 정말 여러번 해야하는 경우가 있습니다. 중간에 얼럿, 비밀번호를 입력하는 로직을 개발하면서 ....대체 비밀번호를 입력을 했는지 모를정도로 테스트를 했어요. 키보드가 켜졌을 때, 내가 원하는 키보드가 아니면 한영, 숫자선택 을 꼭 눌러야하는데요. 결국은 사용자가 해야하는 작업을 여러 차례 하는 것이지만 조금이라도 간편해질 수는 없을까 생각해봤습니다. 사실 제가 편하자고... 예를 들면 텍스트필드(빈칸)에 입력할 때, 이메일 키보드가 나오든지 숫자패드가 나오든지 등을 결정하는 거 . 별거 아닌데 사용경험에 작업하나라도 줄면 좋을것같아서요. 다들 당연히 하시는 작업이긴한데 저는 자꾸 까먹어서 정리했습니다 키보드타입의 종류 키보드.. 2022. 4. 28.
롱프레스 및 햅틱진동 구현하기 롱프레스 및 햅틱진동 구현하기 롱프레스 시간은 3초로 지정 햅틱진동 구현 AudioToolbox 사용 햅틱진동 구현하기 1. AudioToolbox Framework 추가해주기 프로젝트 - General - Framework, Libraries, and Embedded Content AudioToolbox.framework 찾아서 Add 헤더파일추가하기 swift: Import objc : #import 진동메서드 구현 AudioServicesPlaySystemSound(1520); 자주쓰는 진동 패턴 : 1519, 1520, 1521 진동관련 참고블로그 진동메서드관련 소들이 블로그 참고 https://babbab2.tistory.com/36 진동메서드관련 종류별 소개 https://medium.com/.. 2022. 4. 26.