분류 전체보기 (404) 썸네일형 리스트형 Framework SPM 배포 spm 으로 framework 를 배포하기 위해서는 swift 5.3 이상이 필요하고, xcframework 로 빌드되어야 한다. 아키텍처별로 framework 생성후에 xcframework 를 생성한다. XCFramework 만들기 (tistory.com) 생성된 xcframework 를 git 저장소에 업로드 해당 저장소에 Package.swift 파일 생성한다. // swift-tools-version:5.3 import PackageDescription let package = Package( name: "MyLibrary", platforms: [ .iOS(.v13), ], products: [ .library(name: "MyLibrary", targets:["MyFramework"]), ],.. URLSession.DataTaskPublisher DataTaskPublisher URLSession 은 combine publisher인 DataTaskPublisher를 제공한다. dataTaskPublisher(for:) 메쏘드로 publisher를 생성 할 수 있으며, 결과는 듀플( Data: , URLResponse)로 전달된다. public struct DataTaskPublisher: Publisher { typealias Output = (data: Data, response: URLResponse) typealias Failure = URLError let request: URLRequest let session: URLSession func receive(subscriber: S) where S: Subscriber, S.Failure.. 엑스박스 시리즈 엑스 : 올 엑세스 작년 겨울을 지나며 이제 차세대기를 한대 들일까 마음먹은지 무려 8개월. 정말 이렇게 구하기 어려울 것이라 생각치도 못한 기기 엑스박스 시리즈엑스(엑시엑)이 드디어 손에 들어왔다. 쿠팡 및 네이버 0초컷(구매 버튼을 못 봤음), 11번가 1초컷 등등 환상속에만 존재하리라 생각했던 엑시엑. skt 올엑세스 2번째 도전에서 약 20초컷의 경쟁률을 뚫고 성공. (이번에 실패하면 시리즈 에스를 구매하려고 했음) skt 올엑세스는 2년(24개월)간 매달 39,900원으로 기기와 게임패스(얼티)를 제공하는 서비스이다. 렌탈이라기보다는 24개월 무이자 할부 같은 느낌. skt 정책은 매달 39,900원(에스는 29,900원)으로 새롭게 게임패스 1개월을 결재하는 방식이라 기존 게임패스 가입자도 제한 없이 이용할 수 .. 카메라 데이터 수신을 위한 AVCaptureSession AVCaptureSession 과 AVCaptureVideoDataOutput은 생성시 별도 설정이 없으므로, 미리 생성해 둔다. Input의 경우 device 객체가 필요하므로, device 생성 이후에 설정. output의 경우 device에 따라 픽셀 포맷이 변경되므로, 관련 프로퍼티 추가. var captureSession: AVCaptureSession = .init() var videoDataOutput: AVcaptureVideoDataOutput = .init() var currentDevice: AVCaptureDevice? var preview: AVCaptureVideoPreviewLayer? var deviceFormat: AVCaptureDevice.Format? var prefe.. collection view 에서 load more 처리 목록을 더 읽어와 하단에 추가하는 경우엔 스크롤 관련 이벤트에 따라 그냥 읽어서 붙이면 간단한데.. 채팅이나 메신저와 같이 이전 목록을 불러와 기족 목록 상단에 추가하는 경우 스크롤 관련 설정이 조금 더 필요. 스크롤 위치에 따라 더 읽기 작업 시작 연속으로 호출되면 안되므로, 플래그를 두어서 한번만 호출되도록 처리 func scrollViewdidScroll(_ scrollView: UIScrollView) { guard scrollView.contentSize.height > scrollView.bounds.height else { return } if scrollView.contentOffset.y UIPanGestureRecognizer 슬라이드 다운 뷰 액션시트와 같이 하단에 표시되는 뷰를 pan gesture를 사용해 에니메이션 시키고, 사라지게 하는 예. class DefaultTouchPanGestureRecognizer: UIPanGestureRecognizer { var touchPosition: CGPoint? override func touchesBegan(_ touches: Set, with event: UIEvent) { super.touchesBegan(touches, with: event) touchPosition = touches.first?.location(in: view) } } class SampleViewController: UIViewController { private var panGesture: DefaultTouchP.. UITextView 사이즈 조정 및 글자 제한, placeholder 제한된 숫자만 입력을 제공하는 경우 UITextViewDelegate 의 아래 메쏘드 구현. 최대수보다 1 크게 체크하는데.. 한글과 같이 마지막에 조합이 이루어지는 경우와 특정 글자가 넘어갈 경우만 알림을 보여주기 위함. func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { guard let currentText = textView.text else { return true } let newLength = currentText.count + text.count - range.length if newLength > maxCharacterCount { // r.. UITextView 자동 높이 특정 사이즈까지는 높이가 커지다가 해당 사이즈 부터는 스크롤로 전환 초기에는 사이즈가 증가해야 하기에 텍스트뷰의 isScrollEnabled = false 로 설정 높이 제약을 특정 사이즈 이하(lessThanOrEqual)로 설정 let textView: UITextView = .init() func setup() { . . textView.isScrollEnabled = false . . addSubview(textView) } func setupLayout() { textView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ textView.heightAnchor.constraint(lessThanOrE.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 51 다음