반응형

iOS 197

[iOS, Swift] UIRefreshControl 예제

iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. UIRefreshControl은 UIScrollView를 상속받는 곳에 사용이 가능합니다. 테이블뷰와 콜렉션뷰에서도 사용가능합니다. 이 컨트롤을 추가하면 사용자는 일반적으로 새로고침하는 것 같은 느낌을 줍니다. scroll 가능한 공간을 아래로 내릴때, refresh 화면을 띄어줍니다. var refreshControl = UIRefreshControl() override func viewDidLoad() { super.viewDidLoad() tableView.dataSource = self tableView.delegate = self tableView.refreshControl = refreshControl r..

iOS/코드조각 2023.02.05

[Library, Metal] vertex를 index로 메모리 절약하기

iOS 16.1, Xcode 14.1, Swift 5, Playground 환경에서 진행했습니다. 기존에 삼각형을 그리려면 변수를 저장하여야하는데, 수많은 삼각형을 그리게 되면, 겹치는 꼭지점이 무수히 많아 메모리가 낭비될 것입니다. 그리하여 겹치는 부분은 제거하고 같은 꼭지점은 index로 접근하는 방법이 있습니다. let vertices: [Float] = [ -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0 ] let indices: [UInt16] = [ 0, 1, 2, 2, 3, 0 ] indices에서 첫번째 줄 0, 1, 2는 vertices[0], vertices[1], vertice[2]의 지점을 사용한다는 의미입니다. indices 두번째 줄 2, 3, 0은 vert..

iOS/라이브러리 2023.02.03

[Library, Metal] 삼각형 그리기 (pipeline)

iOS 16.1, Xcode 14.1, Swift 5, Playground 환경에서 진행했습니다. 삼각형의 좌표를 저장하는 [Float] 배열을 만들고, 삼각형의 좌표를 구성하는 Buffer를 생성합니다. let vertices: [Float] = [ 0, 1, 0, -1, -1, 0, 1, -1, 0 ] let vertexBuffer = device.makeBuffer(bytes: vertices, length: vertices.count * MemoryLayout.size) Shader Function은 GPU를 돌리기 위한 작은 프로그램입니다. Shader Function을 작성하기 위하여 Metal Shading Laungage(MSL)을 사용해야합니다. MSL은 C++로 구성되어 있습니다. .m..

iOS/라이브러리 2023.02.03

[Library, Metal] MetalView 그리기

iOS 16.1, Xcode 14.1, Swift 5, Playground macOS 환경에서 진행했습니다. MetalKit에서 제공하는 MTKView는 NSView 또는 UIView를 상속하며, MTKView는 메탈에 관련된 기능들을 사용할 수 있게 합니다. MTKView를 사용하기 위해서 먼저 Device를 등록해주어야합니다. import PlaygroundSupport import MetalKit let view = MTKView(frame: frame, device: device) view.clearColor = MTLClearColor(red: 1, green: 1, blue: 0.8, alpha: 1) guard let device = MTLCreateSystemDefaultDevice() e..

iOS/라이브러리 2023.02.03

[Xcode, markup] 서식이 있는 주석 작성하기

iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. //:# 제목 //:### 부제목 //: [Next](@next) 서식이 있는 주석을 작성하려면 // 뒤에 :(콜론)을 붙여줌으로써 Markup 형식의 문서를 작성할 수 있습니다. Xcode에서 마크업 형식을 보려면 Editor - Show Rendered Markup 설정을함으로써 마크업 문서를 볼 수 있습니다. 참조: https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/Headings.html#//apple_ref/doc/uid/TP40016497-CH8-SW1 Markup Forma..

iOS/팁 2023.02.02

[iOS, Swift] Swift 문법 Filter 예제

iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. Filter는 컨테이너 내부의 값을 걸러서 추출하는 역할을 합니다. Filter 함수의 매개변수로 전달되는 함수의 반환타입은 Bool입니다. let numbers: [Int] = [0, 1, 2, 3, 4, 5] let evenNumbers: [Int] = numbers.filter { (number: Int) -> Bool in return number % 2 == 0 } print(evenNumbers) // [0, 2, 4] 클로져 간략화 let evenNumbers: [Int] = numbers.filter { $0 % 2 == 0 }

iOS/문법 2023.02.02

[iOS, Swift] Swift 문법 Map 예제

iOS 16.1, Xcode 14.1, Swift 5, UIKit 환경에서 진행했습니다. Map은 자신을 호출할 때, 매개변수로 전달된 함수를 실행하여 그 결과를 반환해주는 함수입니다. Map을 사용하면 컨테이너가 담고 있던 값을 매개변수로 받은 함수를 통해 컨테이너에 포장하여 반환됩니다.기존 데이터를 변형하는데 많이 사용합니다. let numbers: [Int] = [0, 1, 2, 3, 4] var doubleNumbers: [Int] = [Int]() doubleNumbers = numbers.map({ (number: Int) -> Int in return number * 2 }) print(doubleNumbers) // [0, 2, 4, 6, 8] 클로져 간략화 doubleNumbers = n..

iOS/문법 2023.02.01
반응형