본문 바로가기

모바일앱/iOS91

노치 부분까지 레이아웃 설정하는 방법 레이아웃을 만들때, 노치부분까지 이미지를 넣을것인지 결정후, 배경을 image로 넣는경우 1. StoryBoard에서 image를 넣어준다. 2. 배경으로 사용할 이미지를 상 하 좌 우 를 0으로 맞춰준다. 3. 노치가 있는 모델은 자동으로 노치길이만큼 top이 적용된다. 풀어줄지 결정 4. 범위를 SuperView로 하는 경우는 해당 레이아웃을 선택해 firstItem을 변경 2022. 2. 24.
JSON이란 JSON은JavaScriptObjectNotation의 약자 예시1) 출처 : 위키피디아 { "이름": "홍길동", "나이": 25, "성별": "남", "주소": "서울특별시 양천구 목동", "특기": ["농구", "도술"], "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"}, "회사": "경기 수원시 팔달구 우만동" } JSON은 name: value 형태의 쌍으로 이루어져있습니다. 첫째줄을 보면 name은 "이름"이고 value는 "홍길동"이라고 나와있죠. 둘째줄을 보면 name은 "나이"이고 value는 25입니다. name에 위치한 것들은 모두 String입니다. 그렇기 때문에 ""로 묶여있죠. 기억하시죠!! String은 ""로 표기 반면에 value자리에는 다른 .. 2022. 2. 23.
App의 생명주기 App의 생명주기 App의 생명주기는 아래 5가지 상태를 가진다. Not Running : 실행되지 않은 상태 In Active : 앱이 실행 중인 상태이지만 아무런 event를 받지 않은 상태 Active : 앱이 실행중이며 event가 발생한 상태 BackGround : 앱이 BackGround에 있는 상태이지만 실해오디는 코드가 있는 상태 Suspended : 앱이 BackGround에 있고 실행되는 코드가 없는 상태 앱이 동작하는 과정을 나누어보면 아래 4가지 상태를 볼 수 있다. 앱을 시작할 때 앱을 비활성화 할 때 앱을 활성화 할 때 앱을 종료할 때 application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions => 어플리케이션.. 2022. 2. 22.
Progress Bar(2) UIProgressView 구현 방법 핵심 progressView.progress = 0.1: progress의 위치 (0 ~ 1) progressView.setProgress(_:animated:): progress의 위치 + 애니메이션 적용 (0 ~ 1) https://ios-development.tistory.com/741 [iOS - swift] UIProgressView (로딩, 프로그래스 바) UIProgressView Loading이 얼마나 지속되는지 알 수 있는 경우 UIProgressView를 사용 Loading이 얼마나 지속될지 알 수 없는 경우는 Spinner (UIActivityIndicatorView) 사용 UIProgressView 구현 방법 핵심 pr.. ios-developm.. 2022. 2. 17.
Progress Bar progress bar는 앱에서 로딩을 할때 자주 보여주는 UI Component이다. 위처럼 웹 브라우저 상단의 로딩을 보여주기도 하고 이런 다양한 로딩의 시각적 요소로 사용할 수있다. 세팅에서 가장 중요한 것은 두가지 이다. 먼저 프로그래스바를 변수지정하고 @IBOutlet progressBar: UIView! progressBar.progress progressBar.SetProgress 아래 위치한 progress 그리고 setProgress이다. progress는 최초값을 지정해주는 역할 setProgress는 갱신할 현재값을 지정해주는 역할을 한다. 그외에도 tintColor를 결정하는 progressTintColor: UIColor? 프로그래스의 배경색을 결정하는 trackTintColor:.. 2022. 2. 16.
xib의 이름으로 화면전환하기 (present) 먼저 생성한 xib 의 File's Owner에 들어가 Class명을 ViewController와 클래스명을 일치시켜준다. 내 파일에서의 클래스명과 xib파일이름은 AAViewController으로 동일하게 맞췄다. let vc = AAViewController(nibName:"AAViewController", bundle: nil) vc.modalPresentationStyle = .fullScreen self.present(vc, animated: true, completion: nil) 프레젠 테이션 스타일을 .fullScreen으로 하지 않으면 단순하게 모달스타일로 띄워지기 때문에 드래그하면 다시 전화면으로 갈 수 있다. 단순하게 세팅페이지 같은 걸 사용하는게 아니라 페이지 자체를 이동시켜서 돌아.. 2022. 2. 14.
serial(직렬)과 Concurrent(동시) 저번시간에 queue.async { task } 또는 queue.sync { task } 를 통해 task를 queue로 보냈다 그리고 쌓여 있는 task 들을 다른 스레드로 보내야하는데 GCD 혹은 Operation의 선택은 어떻게 될까 1. 한개의 스레드에 몰아 넣는다 2. 여러개의 스레드에 나눈다 뭐 둘 다 가능 이때, 둘 중 어떤 방식을 선택할건지queue 특성에 따라 결정된다 Serial queue (보통 메인 스레드에서) 분산 처리 시킨 작업을 “다른 한개의 스레드에서” 처리하는 큐 Concurrent Queue (보통 메인 스레드에서) 분산 처리 시킨 작업을 “다른 여러개의 스레드에서” 처리하는 큐 어떤 큐를 사용할 것인지에 대한 핵심 포인트는 바로 작업 순서의 중요도에 있습니다. Seria.. 2022. 1. 17.
Operation Operation GCD는 우리가 Queue에 작업을 보내면 그에 따른 스레드를 적절히 생성해서 분배해주는 첫번째 방법이라고 지난 글에 올렸다. Operation 도 비슷한 기능을 한다. Operation에서 사용하는 queue의 이름은 Operation Queue 이 녀석도 내부적으론 GCD 위에서 동작하지만 몇 가지가 추가된다. 동시에 실행할 수 있는 동작의 최대 수 지정 동작 일시 중지 및 취소 정리하자면 해야하는 작업들은 기본적으로 따로 지정하지 않는 한, 메인스레드에서 처리하게 되어있다. ios에서는 이것을 queue라는 곳으로 보내면 작업들은 그 곳에서 선입선출로 처리 하게 된다. 그래서 이 다수의 일들을 스레드에 분배하는 기술들중의 하나가 - GCD (Grand Central Dispatch.. 2022. 1. 15.
Dispatch GCD는 우리가 Queue에 작업을 보내면 그에 따른 스레드를 적절히 생성해서 분배해주는 첫번째 방법입니다. 그리고 GCD에서 사용하는 queue의 이름이 Dispatch Queue 인거죠! 즉! Dispatch Queue에 작업을 추가하면 GCD는 작업에 맞는 스레드를 자동으로 생성해서 실행하고, 작업이 종료되면 스레드를 제거하게 됩니다. DispatchQueue: iOS에서 동시성 프로그래밍을 돕기 위해 제공하는 queue global: DispatchQueue의 종류 async: 비동기 global dispatch queue에 비동기로 task를 보낸다 2022. 1. 14.
링크에 한글이 있는 경우 한글이 포함된 url string으로 URL 컨버팅을 해줄 경우, nil 값이 반환되는 문제가 발생했다. URL의 string: 은 영문, 숫자와 특정 문자만 인식 가능하고, 한글, 띄어쓰기 등은 인식하지 못한다고 한다. 따라서 한글이 포함되어있는 url String을 따로 인코딩해주는 작업이 필요하다. let urlStr = let encodedStr = urlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! let url = URL(string: encodedStr)! 2022. 1. 13.