목록iOS (30)
Jimmy's iOS

프로젝트를 하면서 화면 자동잠금이 설정되어 있는 핸드폰이 자동 잠금이 되면 안되는 상황이 있었다. 찾아보니 isIdleTimerDisabled 라는 속성이 있었다. 해석을 해보니 앱에 대해 유휴 타이머가 비활성화되었는지 여부를 제어하는 부울 값이라고 한다. 앱이 사용자의 입력으로 인한 터치가 없으면 시스템은 기기 화면을 어두워지는 절전 상태로 변경을 하는데 이걸 제어할 수 있다. 기본값은 false 이다. 사용법은 간단하다. SceneDelegate 의 willConnectTo session 메소드에 true 로 작성을 해주면 된다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: U..
1. ceil() - 올림 함수 ceil(3.1) // 4 ceil(3.2) // 4 ceil(3.4) // 4 ceil(8.0) // 8 ceil(9.4) // 10 2. round() - 반올림 함수 round(5.1) // 5 round(5.3) // 5 round(5.4) // 5 round(5.5) // 6 round(5.6) // 6 3. floor() - 버림 함수 floor(2.1) // 2 floor(2.5) // 2 floor(2.8) // 2 floor(6.7) // 6 floor(8.9) // 8
1. Alamofire 란? Alamofire 는 Swift 기반의 HTTP 네트워킹 라이브러리 이다. URLSession 에 기반한 라이브러리로 네트워킹 작업을 단순화 하고 네트워킹을 위한 다양한 메서드와 json 파싱등을 제공한다. 주요 특징은 연결 가능한 request, response 메서드를 제공하고 url json 형태의 파라미터 인코딩을 지원한다. 또 파일, data, String, MultipartFormData 등 업로드 기능을 제공하고 HTTP response 검증과 광범위한 단위 테스트 및 통합 테스트를 보장한다. 2. URLSession 대신 Alamofire 을 사용하는 이유 코드의 간소화, 가독성 측면에서 도움을 주고 여러 기능을 직접 구축하지 않아도 쉽게 사용할 수 있다. 3...
1. URLSession 특정한 url 을 이용하여 데이터를 다운로드 하고 업로드 하기 위한 API 한마디로 앱에서 서버와 통신하기 위해 제공하는 api 라고 생각하면 된다. URLSession 은 URLSessionConfiguration 을 통해 생성할 수 있다. 이렇게 생성된 URLSession 을 통해 한개 이상의 URLSessionTask 를 생성할 수 있다. 2. URLSession 의 종류 1) 공유 세션 (Shared Session) URLSession.shared() : 싱글톤으로 사용할 수 있고 기본 요청을 하기 위한 세션 2) 기본 세션 (Default Session) URLSession(configuration : .default) : 공유 세션과 유사하게 작동하지만, 직접 원하는 ..
다크모드와 라이트모드 , 둘 중 한가지만 지원되도록 하고 싶다면 window 를 설정해줄때 overrideUserInterfaceStyle 에서 설정을 주면 됩니다. window?.overrideUserInterfaceStyle = .light window?.overrideUserInterfaceStyle = .dark import UIKit class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { g..
UINavigationController 를 사용해서 커스텀 barButtonItem 을 주면 화면을 왼쪽 스크롤시 자동 팝업이 되는게 불가능했다. 어떻게 하면 기본 자동 팝업 효과를 줄 수 있을까 찾아보니 GestureRecognizerDelegate 로 해결을 할 수 있었다. import UIKit // 여기서 SecondViewController 는 FirstViewController 에서 네비게이션으로 푸시된 뷰컨이라 가정 class SecondViewController : UIViewController { override func viewDidLoad() { super.viewDidLoad() navigationController?.interactivePopGestureRecognizer?.de..
Lottie 는 에어비앤비사에서 개발한 라이브러리로 adobe after effects로 만든 애니메이션을 IOS에서(다른 플랫폼도 가능) 손쉽게 사용하게끔 도와주는 라이브러리 이다. 먼저 cocoapod 을 통해서 lottie 를 설치해준다! pod 'lottie-ios' lottie-animation 간단 구현하기 import UIKit import Lottie class ViewController : UIViewController { //MARK: - Properties private let lottieView : AnimationView = { // AnimationView 는 lottie 에서 제공해주는 뷰 이다. let v = AnimationView() return v }() //MARK: ..
내가 올린 앱의 최신 버전과 앱스토어에 있는 앱 버전을 비교해서 앱스토어에 있는 버전이 낮으면 사용자들에게 업데이트 하러 가기 기능을 구현하고 싶었다. 이 방법은 강제 업데이트를 하게끔 alert 창에 업데이트 버튼만 넣고 다음 화면으로 넘어가지 않도록 구현을 했다. 1. 현재 내 앱 버전 확인하는 방법 let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String if let myVersion = version { print("version : \(version)" } 2. SplashViewController 에 버전체크하는 함수를 만들어서 사용해준다. func updateCheck() { if let url = U..
Extension 폴더안에 재사용을 위해서 만들어 놓는다. enum FontType { case regular, bold, medium, light, semibold } //MARK: - UIFont extension UIFont { static func fontWithName(type : FontType, size : CGFloat) -> UIFont { var fontName = "" switch type { case .regular: fontName = "AppleSDGothicNeo-Regular" case .light: fontName = "AppleSDGothicNeo-Light" case .medium: fontName = "AppleSDGothicNeo-Medium" case .semibo..
화면 이동 시 전 viewController 는 희미해지면서 새로운 viewController 가 나오도록 구현을 하고 싶었다. 처음에는 기존 modalTransitionStyle 의 crossDissolve 의 속성을 사용하려 했으나 이 속성은 너무 빨리 화면이 교차가 되었다. 다른 기능을 찾아보다가 CATransition() 속성을 사용해서 내가 원하는 fade 기능을 쓸 수 있다는 걸 알게되었다. func giveFadeFunctions () { let transition = CATransition() transition.duration = 0.65 transition.timingFunction = CAMediaTimingFunction(name : kCAMediaTimingFunctionEaseO..