UIButton에서 아이콘 그리고 타이틀 사이에 마진을 설정하는 방법에 대해서 정리하려 한다. 제플린에서 받은 디자인 가이드에서 버튼이 존재했고 그 버튼의 아이콘과 타이틀 사이에 마진 8이 필요했다. (버튼과 라벨을 따로 해도 되지만 버튼과 라벨에 대한 액션을 추가해줘야 해서 번거로워 버튼에 아이콘과 타이틀을 추가해주기로 했다.) 아래와 같이 UIButton을 생성해주고 image는 santa로 title은 santa claus로 설정했다. 기본 오토레이아웃은 중앙 정렬로 설정했다. UIButton을 생성하고 아이콘과 타이틀을 추가하니 아이콘 바로 옆에 타이틀이 위치했다. Button을 초기 생성하고 Insets들을 살펴보면 0으로 설정된 것을 확인할 수 있다. 어쨌든 나는 아이콘과 타이틀 사이의 마진을..
우리가 보는 영상의 경우 비디오 파일을 그대로 저장하게 되면 큰 용량을 차지하게 된다. 대부분의 비디오 파일은 압축해서 가지고 있고 압축해서 저장을 한다. 그 압축하는 과정을 인코딩이라 하고 압축을 풀어서 보여주는 작업을 디코딩이라 한다. 압축 인코딩을 해주는 프로그램을 코더라 하고 압축을 푸는 디코딩을 해주는 프로그램을 디코더라 한다. 이것을 묶어서 코덱이라 한다. Coder에 Co, Decoder의 Dec = CoDec! 코덱은 어떠한 데이터 스트림이나 신호에 대해, 인코딩이나 디코딩 혹은 둘 다를 할 수 있는 하드웨어나 소프트웨어를 일컫는다. 일반적으로 코덱이라고 하면 영상, 음향 등 미디어 정보를 압축하는 기술을 가리킨다. 압축 규칙은 당양하게 많이 있으며 코덱의 종류 또한 다양하다. 다양한 압축..
P2P 네트워크를 살펴보기 전 일반적인 서버 기반인 네트워크를 살펴보겠습니다. 일반적인 경우의 서버 기반 네트워크는 서버와 클라이언트로 구성되어 있습니다. 서버와 클라이언트 사이에는 인터넷이 있습니다. 예를 들어 서버는 검색이나 메일 서비스를 제공하는 컴퓨터이고 클라이언트는 노트북이나 스마트폰입니다. 이런 방식으로 인터넷은 서비스를 요청하는 클라이언트와 서비스를 제공해주는 서버로 구성되어 있습니다. 일반적으로 하나의 서버에는 여러 대의 클라이언트가 연결되어 있습니다. 서버 베이스는 장점으로 관리가 쉽습니다. 단점으로는 서버에 문제가 생기면 전체가 중단됩니다. 위키백과에 나온 개념: (ko.wikipedia.org/wiki/P2P) P2P (peer-to-peer network) 혹은 동등 계층 간 통신망..
팰린드롬 알고리즘에 대해서 작성해보려 합니다. 팰린드롬 알고리즘은 면접에서 물어보는 알고리즘으로 유명하기도 합니다. 팰린드롬 알고리즘에 대해서 살펴보기 전 팰린드롬의 정의를 찾아보면 팰린드롬은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열입니다. (A palindrome is a word, phrase, number or sequence of words that reads the same backward as forward.) 팰린드롬의 예로는 기러기, 요기요 등이 있습니다. 그럼 주어진 문자열이 팰린드롬인지 아닌지는 어떻게 확인할 수 있을까요. 그냥 뒤집어보면 압니다. func isPanlindrome(_ s: String) -> Bool { if s == String(s.reve..
스위프트에서 클래스는 레퍼런스 타입이고 구조체와 열거형은 값 타입입니다. 값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없습니다. 값 타입의 속성을 수정하려면 인스턴스 메서드에서 mutating 키워드를 사용해야 합니다. mutating을 붙이면 self 프로퍼티에 새로운 인스턴스를 할당할 수 있습니다. struct Point { var x = 0.0, y = 0.0 mutating func moveBy(x deltaX: Double, y deltaY: Double) { self = Point(x: x + deltaX, y: y + deltaY) } } mutating moveBy(x:y:)메소드는 x, y값이 타겟 위치로 설정된 새 구조체를 만듭니다. 또 다른 예제 enum TriSta..
AVPlayerViewController 클래스 시스템을 지원하는 재생 컨트롤 플레이어 오브젝트의 비디오 콘텐츠를 표시하는 뷰 컨트롤러입니다. // AVPlayerViewController는 iOS 8.0 이상부터 사용 가능합니다. AVPlayerViewController를 사용하면 네이티브 시스템 플레이어와 스타일이 매칭 되는 앱에 미디어 재생 기능을 간단하게 추가할 수 있습니다. AVPlayerViewController는 시스템 프레임워크 클래스이기 때문에 앱에서는 따로 추가해줄 작업할 것 없도록 자동으로 기능을 채택하고 업데이트합니다. (AVPlayerViewController를 서브 클래싱 하거나 메서드를 재정의 하는 것은 지원되지 않습니다.) AirPlay 지원 AirPlay를 사용하면 유저가 ..
어떤 분이 초기화되지 않은 버퍼에 액세스 할 수 있는 배열 초기화 프로그램을 만든 포스트를 보다가 작성하게 되었어요. forums.swift.org/t/array-initializer-with-access-to-uninitialized-buffer/13689 스위프트에서 배열 크기 늘리기 // Grwoing the size an array 스위프트에서 배열은 내용을 보관하기 위해 특정 사이즈만큼의 메모리를 예약해둡니다. 배열에 element를 추가하고 해당 배열이 예약된 용량을 초과하기 시작하면, 배열은 더 큰 메모리 영역을 할당하고 해당 element를 새 저장 공간에 복사합니다. 이때 새 저장소의 크기는 이전 저장소 크기의 배수입니다. 이렇게 배수로 증가시키는 것은 상수 시간으로 element가 추가..
이전에 살펴봤던 @State에 이어서 @Binding, @ObservedObject and @EnvironmentObject를 살펴보겠습니다. @State 뷰가 소유하고 있는 변수입니다. @State 변수는 영구 저장소를 할당하게 됩니다. 애플은 @State변수가 특정 뷰에게 관리되고 소유되도록 private 하게 선언하도록 합니다. 2020/11/02 - [개발/SwiftUI] - SwiftUI @State살펴보기 @Binding 데이터를 저장하는 프로퍼티와 데이터를 표시하고 변경하는 뷰 사이에 연결을 @Binding을 사용해 만들 수 있습니다. (즉 다른 뷰에서 @State 변수를 바인딩할 수 있습니다.) @Binding은 데이터의 참조값을 가지고 있기 때문에 @State와 다르게 초기화해주지 않아도..
- Total
- Today
- Yesterday
- 문자열
- 스위프트
- objective-c
- ARC
- swift5
- rxswift
- Xcode
- 머신러닝
- objc
- string
- 애니메이션
- wwdc
- iOS SwiftUI
- 책
- Animation
- 책 후기
- 책 추천
- swiftUI
- Algorithm
- leetcode
- SWIFT
- stanford SwiftUI
- ios
- 알고리즘
- ReactiveX
- Deep learning
- 독서
- 스위프트UI
- 딥러닝
- RX
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |