스위프트 파일을 생성하면 기본적으로 임포트 되는 프레임워크가 있는데 바로 Foundation입니다.이는 필수적인 데이터 타입과 컬렉션 및 운영체제 서비스에 접근해 애플리케이션의 기본적인 기능을 정의하고 관리하는 프레임워크입니다. developer.apple.com/documentation/foundation 이러다가 사용자 인터페이스를 구현하고 이벤트를 관리하려면 UIKit를 임포트 시켜야 합니다. developer.apple.com/documentation/uikit 하지만 UIKit내부에는 Foundation프레임워크가 포함되어있습니다. 그렇기 때문에 Foundation 임포트 시키는 줄을 없애도 무방합니다. UIKit는 Foundation을 포함한 많은 다른 프레임워크를 가져오는 umbrella프레..
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를 사용하면 유저가 ..
- Total
- Today
- Yesterday
- 독서
- string
- 알고리즘
- Xcode
- 스위프트
- Algorithm
- objc
- objective-c
- Animation
- ios
- 딥러닝
- Deep learning
- 문자열
- ReactiveX
- ARC
- swift5
- rxswift
- 책 후기
- leetcode
- stanford SwiftUI
- 머신러닝
- SWIFT
- iOS SwiftUI
- 책 추천
- 스위프트UI
- wwdc
- swiftUI
- 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 |