본문 바로가기
반응형

swift43

iOS] UIDocumentInteractionController, PDF 뷰어 및 다운로드 & 저장 처리 오늘은 오랜만에 iOS관련 포스팅. 자바, 스위프트, 코틀린, 자바스크립트, 도커, 오브젝티브-C등등... 많은 언어를 가끔씩 쓰다보니 헷갈려 죽을 것 같다. @@ 어제 갑자기 아이패드에 웹뷰와 통신할 수 있는 브릿지 하나를 추가해달라는 요청을 받았는데 프론트에서 Base64로 인코딩된 문자열을 올려 줄테니 이걸 pdf로 다운로드 받게 해달라는 요청이었다. OK! 시간은 좀 걸리겠지만, 한번 해보겠어 ~ 라며, 겁나 검색합니다. ^^ 그리하여 알게된 오늘의 주제, UIDocumentInteractionController 아마 이 포스팅 말고 친철하고 멋진? 포스팅이 많을 것이라 생각한다. 난, 나의 기억을 위해 ^^ 1. 프론트에서 올려보낸(브릿지를 통해) Base64문자열을 받아 먼저 FileManag.. 2023. 6. 13.
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] @discardableResult, 함수 리턴값 사용하지 않는 Call에 대한 배려 Result of call to 'checkValidate(type:)' is unused 와 같은 경고가 나온다면 메서드 선언 앞에 @discardableResult 어노테이션을 사용하면 경고를 없앨 수 있다. 그리고, 해당 함수를 호출 할 때 리턴 값을 사용하지 않을 때는 받지 않을 수 있다. 알아두면 유용할 수 있다. 2022. 5. 25.
swift NavigationController back 제스처 제어하는 코드(UIGestureRecognizerDelegate) 오늘 일하던 중, 뷰컨트롤러의 계층 구조에 대한 오류(whose view is not in the window hierarchy.)가 발생하는 바람에 이전 프로젝트에서 했던 방식과 동일하게 네비게이션컨트로럴를 사용하도록 변경을 하고 특정 페이지에서는 좌에서 우로 제스처 동작이 먹히지 않도록 처리를 했다. 이런건 기록 해놔야 한다. 전체적인 뷰컨트롤러의 관리는 UIManager가 하고 있으므로 UIManager에 다음과 같은 메서드가 있다. 다음 프로토콜을 따른다고 명시해야한다. @protocol UIGestureRecognizerDelegate 소스코드는 다음과 같다. /** * NavigationBar Back */ func gestureRecognizer(_ gestureRecognizer: UIGe.. 2022. 5. 10.
반응형