일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RxKotlin
- PagingLib
- Reactive
- mysql
- Observable
- MediaSession
- Android
- 인앱결제
- Animation
- Android 13
- SwiftUI Tutorial
- SWIFTUI
- android13
- list
- MotionLayout
- MediaPlayer
- php
- Kotlin
- node.js
- mvvm
- paging
- node
- GCP
- rx
- google play
- 동영상
- 테스트 자동화
- junit
- databinding
- Koin
- Today
- Total
목록iOS Tip (18)
봄날은 갔다. 이제 그 정신으로 공부하자
Dispatch Queue란? GDC(Grand Central Dispatch) Dispatch Queue는 동기 or 비동기식으로 Task를 수행할 수 있는 강력핟 도구 입니다. 개발자는 Dispatch Queue를 사용하여 그동안 별도의 Thread를 통해 수행하던 거의 모든 Task를 수행할 수 있습니다. Dispatch Queue의 장점은 사용하기 쉽고 Thread 코드보다 Task를 실행이 더 효울적이라는데 있습니다. Dispatch Queue는 "큐"라는 이름에서 알 수 있듯이 FIFO(First-In, First-Out) 형태의 자료 구조를 가지므로 Dispatch Queue에 추가된 Task는 항상 추가된 순서대로 시작되며 Serial과 Concurrent 두가지 타입을 가집니다. Seri..
이번 글에서는 Text에 따라 동적으로 변하는 영역을 가지는 레이아웃을 만들어보도록 하겠습니다. 이전 글과는 다르게 이번에는 3가지 방법을 사용해볼까 합니다. - 첫번째는 스토리보드를 사용한 방법 - 두번째는 스토리보드 사용을 최소화하고 프로그래밍으로 처리하는 방법 - 마지막 세번째 방법은 프로그래밍으로 처리하지만 오토레이아웃을 사용하지 않는 방법 무엇을 만들 것인가? 아래와 같은 레이아웃을 만들어보겠습니다. 개발하다 보면 자주 접하는 아주 흔한 레이아웃이네요. ^^ 정석적으로 하면 왼쪽에 UILabel 한개만 놓고 Text의 일부 색상만 변경해 레이아웃을 구성하는게 맞는 방법이지만 지금은 그렇게하면 곤란하므로 여기에서는 일부러 복잡하게 "총 1,234 건"을 3개의 UILabel로 나누어 만들어보도록 ..
이번 글에서는 "라운드 프레임 버튼"을 두가지 방식("스토리 보드"와 "코딩으로 직접 추가")으로 만들어 보겠습니다. 스토리 보드로 라운드 프레임 버튼 만들기 우선 ViewController 중앙에 아래와 같이 UI 버튼을 추가합니다. 버튼을 중앙에 정렬 되도록 아래 그림과 같이 오토레이아웃 값을 설정해줍니다. 라운드 프레임 처리를 위해 Identity Inspector의 User DefinedRuntime Attributes에 아래와 같은 속성값을 입력해 줍니다. 추가로 Attributes Inspector로 이동해 View 부분의 Drawing 관련 부분의 Clip to Bounds를 체크해 줍니다. 추가로 오토레이아웃 설정에 width 값을 추가해줍니다. 자 이렇게 스토리보드를 사용해 1dp의 검은..
예전에 숫자에 콤마를 추가하는 글을 게시한 적이 있었는데 거기에 iOS 관련된 부분이 없어 이번 글을 통해 iOS에서 숫자에 콤마를 추가하는 방법에 대해 설명하도록 하겠습니다. https://als2019.tistory.com/23 숫자에 콤마 추가 시 주의할 점 개발하다보면 숫자에 콤마를 추가하는 경우(통화 표시)가 자주 발생합니다. 이러한 경우 대부분 아래와 같이 DecimalFormat를 사용해 통화 표시를 추가해 줍니다. val formatter = DecimalFormat("#,###") val cS. als2019.tistory.com 노파심에서 다시 한번 설명하자면 우리나라를 포함한 미국과 영국은 소수 자리수 구분은 마침표(“.”)로 구분하고 3자리를 단위로 콤마(“,”)기호를 표시하지만 소..
개발을 하다보면 Label 영역에 Padding을 주어야 하는 경우가 자주 발생합니다. 그럴때는 UIView를 만들고 SubView로 UILabel을 추가하면서 Leading, Trailing, Top, Bottom space를 Padding할 사이즈만큼 주면 되지만 그렇게 할 경우, Layout이 쓸데 없이 복잡해지니 이럴때는 간단하게 UILabel을 커스텀해서 패딩을 추가할 수 있습니다. Step 1. 커스텀 클래스 추가 우선 UILabel을 상속받은 MyPaddingLabel.swift 파일을 아래와 같이 추가해줍니다. import UIKit class MyPaddingLabel: UILabel { var padding: UIEdgeInsets @IBInspectable var left: CGFlo..
첫번째 방법은 앱을 실행한 ppid를 확인하는 방법으로 일반적으로 앱은 iOS의 launchd Process에 의해 실행 됩니다. launchd 프로세스는 user mode에서 첫번째로 실행되는 프로세스로 pid는 1입니다. 즉 앱이 실행될 때 ppid를 확인해서 ppid가 1이 아니면 디버거에 의해 실행 될 수 있다고 판단할 수 있습니다. 사용 방법은 아래와 같습니다. func hasDebugger() -> Bool { return getppid() != 1 } 두번째 방법은 sysctl 커널 명령어를 사용한 방법으로 sysctl 명령어는 커널 runtime 시에 커널의 파라미터를 변경할 때 시스템의 /proc/sys 디렉토리밑에 있는 커널 매개변수를 제어하는데 사용됩니다. sysctl 명령어를 사용해..
스위프트는 프로퍼티에 set, get, willSet, didSet 을 사용할 수 있습니다. set, get이 세트이고 willSet, didSet이 세트 입니다. 하나의 프로퍼티에 4개를 모두 사용할 수는 없습니다. set & get 그리고 willSet & didSet은 비슷해 보이지만 다른 사용성을 가집니다. 우선 set, get부터 set, get은 연산 프로퍼티(Computed Property)로 일반적인 프로퍼티(저장 프로퍼티)와 달리 저장 공간을 갖지 않고 다른 일반 프로퍼티의 값을 읽어 연산하거나 프로퍼티로부터 전달 받은 값을 다른 프로퍼티에 저장하는 역할을 하는 프로퍼티로 class, stuct, enum에서 사용가능한 프로퍼티 입니다. 연산 프로퍼티는 값을 저장하지 않기 때문에 타입 추..
이번 글에서는 가로 스크롤 뷰를 storyboard가 아닌 코딩으로 하는 방법에 대해 설명하도록 하겠습니다. 얼마 전 가로 스크롤 뷰 개발 미션이 있어 개발하려고 보니 이게 난감한게 아이템 갯수가 정해진 게 아니라 가변이더군요. 미션 내용을 정리해보면 아래와 같습니다. - 서버에서 많은 아이템의 수많큼 가변으로 보여져야 됨. - 가로 * 세로 100 * 40 사이즈로 보여져야 함 - 사용자가 아이템을 선택해 아이템을 삭제할 수 있음. 그래서 이걸 어떻게 처리해야 하나 고민하다 직접 코딩해서 해결하기로 했고 결과물은 다음과 같습니다. 우선 아이템을 보여줄 View를 아래와 같이 생성해 줍니다. 미션에서는 조금 더 복잡하게 보여주지만 여기에서는 간략하게 UILabel 한개만 있다고 가정하겠습니다. class..