본문 바로가기
반응형

프로그래밍/Swift51

iOS] UIDocumentInteractionController, PDF 뷰어 및 다운로드 & 저장 처리 오늘은 오랜만에 iOS관련 포스팅. 자바, 스위프트, 코틀린, 자바스크립트, 도커, 오브젝티브-C등등... 많은 언어를 가끔씩 쓰다보니 헷갈려 죽을 것 같다. @@ 어제 갑자기 아이패드에 웹뷰와 통신할 수 있는 브릿지 하나를 추가해달라는 요청을 받았는데 프론트에서 Base64로 인코딩된 문자열을 올려 줄테니 이걸 pdf로 다운로드 받게 해달라는 요청이었다. OK! 시간은 좀 걸리겠지만, 한번 해보겠어 ~ 라며, 겁나 검색합니다. ^^ 그리하여 알게된 오늘의 주제, UIDocumentInteractionController 아마 이 포스팅 말고 친철하고 멋진? 포스팅이 많을 것이라 생각한다. 난, 나의 기억을 위해 ^^ 1. 프론트에서 올려보낸(브릿지를 통해) Base64문자열을 받아 먼저 FileManag.. 2023. 6. 13.
Xcode UnitTest 'No such module '모듈명' 오류 대처 방안 새삼스럽게도 이제와서 Unit Test란걸 해본다. TDD에 대해서는 익히 들어서 알고는 있지만, 막상 프로젝트를 진행하는 시점에서는 잘 사용하지 않았다. 그도 그럴 것이 한시적인 SI프로젝트에서 TDD 까지하면서 개발하는 사람을 본 적이 없다. 그런데 왜 하려고 하냐? 여러 개발 패턴을 적용하는 주요 목적이 코드 재사용성, 손쉬운 테스트, 결합도를 낮출 수 있다는 목적을 가지고 있기에 MVVP, MVP를 적용하고 각 모듈에 대한 검증(테스트)를 진행해보고자 XCTest를 돌려보려고 하는데 처음부터 난관에 부딪혔다. 프로젝트의 프로덕트명을 변경했더니 제목과 같은 오류가 발생되었다. 방안) 프로젝트의 Build Setting > Product Module Name란을 검색해서 찾아보면 나오는 이름으로 임포.. 2023. 3. 17.
UIImage, cornerRadius 적용하는 방법 오늘 UISlider 커스텀 작업을 하면서 UISlider의 setThumbImage() 함수를 호출하기 하려고 이미지를 하나 만들었더니 사각형으로 나와서 살짝 당황했다. 물론 내 머리로 짜는 것은 아니고 인터넷을 찾아보니 Objective-C로 된 소스가 있어 Swift로 컨버팅 했다. 유용할 것 같아 함수로 만들어서 사용하는 중. func cornerRadius(radius: CGFloat) -> UIImage { let image: UIImage = self UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale) let rect: CGRect = CGRect(x: 0, y: 0, width: image.size.width, he.. 2022. 9. 30.
swift viewWillAppear 가 호출 되지 않는 경우(present & dismiss) 이건 뷰컨트롤러에서 present로 모달창을 뛰운 뒤에 그 뷰컨트롤을 닫았을 때 viewWillAppear()가 호출되지 않는경우는 iOS 13부터 그런 현상이 생긴다. 완전한 새 창으로 모달창이 뜨는 것이 아니라 그런거라고 하니 너무 깊이는 알려고 하지 말자. 모달창을 뛰울 때 다음과 같은 옵션을 주면 창이 닫힐 때 이벤트를 받을 수 있다. if let vc = UIStoryboard(name: "Home", bundle: nil).instantiateViewController(withIdentifier: "BookMarkViewController") as? BookMarkViewController { vc.modalPresentationStyle = .fullScreen //fullscreen으로 뛰.. 2022. 6. 24.
Swift함수, 초 단위 값을 hh:mm으로 표현하기(with CustomStringConvertible) 오늘은 스위프트의 함수를 하나 정리해서 올려 두고자 한다. 어제 UI작업을 하던 중, 서버로부터 받은 7200초라는 값을 시:분으로 표현을 하고자 괜찮은 방법이 있는지 검색을 해보니 적당한 extension과 protocol이 있어 정리를 해 둔다. CustomStringConvertible 이란 프로토콜은 사용자기 지정한 문자열로 변환이 가능한 프로토콜이다. 이 프로토콜을 정의하고 시와 분으로 나눠 사용자 정의 서식 문자열로 리턴하면 깔끔하게 사용할 수 있다. public struct TimeParts: CustomStringConvertible { public var hours = 0 public var minutes = 0 public var description: String { return NS.. 2022. 6. 9.
Swift 지정된 날짜(Date)의 요일 구하기 요일을 구하는 방식이 여러가지 다양하게 있는데 검색을 하다 보니 여간 복잡스러운 방법이 있는 경우도 있었다. 좀 더 심플하게 구성할 수 있는 방법이 없을까? 고민하다 포멧터를 이용해서 출력을 해보기로 했다. static func getDayOfWeek(date: Date) -> String { let formatter = DateFormatter() formatter.dateFormat = "EEEEEE" formatter.locale = Locale(identifier:"ko_KR") let convertStr = formatter.string(from: date) return convertStr } 주어진 날짜의 요일을 "월", "화", "수" ... 와 같은 형태로 리턴해준다. 혹, 잘못된 부분이나.. 2022. 5. 30.
반응형