[Dev, iOS] Storyboard 없이 첫 화면을 구성하는 법
·
Dev/iOS
storyboard로 개발을 하는게 더 편리하고  쉽지만, 가끔은 SnapKit 라이브러리를 활용하여 코드로 화면을 짤 수도 있습니다. Project를 생성하고, 기본으로 포함되어있는데 ViewController에 바로 개발을 할 수는 있지만, 굳이 필요 없는 무거운 파일들을 앱에 포함시킬 필요는 없어요. 1. ViewController 삭제 2. Info.plist > Information Property List > Application Scene Manifest > Scene Configuration > Application Session Role > Item 0 > Storyboard Name 삭제 3. Ctrl + N -> 새로운 VC 생성 4. SceneDelegate에 해당 코드 작성func..
[Dev, iOS] 백그라운드 진입 시 민감한 정보 가리기
·
Dev/iOS
금융 등 개인 정보를 담는 앱들은 백그라운드에서 앱 화면을 가리는 기능을 사용한다.iOS 13 미만을 지원하는 앱에서는 appDelegate에서,이상의 버전을 지원하는 앱에서는 sceneDelegate에서 해당 메소드들을 구현해주자. // 액티브 상태가 되었을 경우(다시 앱으로 돌아왔을 때) func sceneDidBecomeActive(_ scene: UIScene) { callBgImage(false) } // 홈 바를 쓸어 올리거나 홈버튼을 두번 눌렀을 경우 func sceneWillResignActive(_ scene: UIScene) { } // 백그라운드 상태였다가 돌아왔을 때 func sceneWillEnterForeground(_ scene: UIScene) { ..
[Dev, iOS] 배경을 Gradient로 색칠하기
·
Dev/iOS
let gradientView = CAGradientLayer()gradientView.frame = bgView.bounds // bgView는 그라데이션을 덮을 superView에 해당let colors: [CGColor] = [ // 해당 부분에 그라데이션을 넣을 색상을 입력 (오름차순으로 표현됌)]gradientView.colors = colors// 그라데이션의 시작점과 끝점을 좌표로 표현, 0은 0을, 1은 maximum X/Y point를 의미gradientView.startPoint = CGPoint(x: 0.5, y: 0.0)gradientView.endPoint = CGPoint(x: 0.5, y: 1.0)// 할당하면 끝bgView.layer.addSublayer(gradientView)
코스트잇 앱 개인정보 처리방침
·
Dev/etc
('https://dusanbaek.tistory.com'이하 'Dusan Baek's Blog')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2021년 9월 10부터 적용됩니다. 제1조(개인정보의 처리 목적) ('https://dusanbaek.tistory.com'이하 'Dusan Baek's Blog')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 ..
[Dev, iOS] 디테일한 다크모드 적용하기
·
Dev/iOS
다크모드를 이용하는 방법은 여러가지가 있지만, 본인의 app target이 13.0 이상을 지원하고 있다면 Asset에서 image set을 다크, 라이트 모드에 따라 지원해주면 쉽게 해결 가능합니다.필자의 경우도 13.0 이상의 앱을 개발중이기에 위와 같은 방법으로 상당 부분 해결하였지만, 문제는 해당 문제를 코드로 구현한 부분에서는 시스템 자체 모드 변경에 맞게 다크 모드로 바로 변경이 되지 않더군요.해당 문제는override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {        super.traitCollectionDidChange(previousTraitCollection)              ..
[Dev, iOS] segue로 넘겨 받은 데이터를 다시 전달하는 법
·
Dev/iOS
여러 블로그를 보아도 부모 뷰 -> 자식 뷰로 뷰 전환이 일어날 때 클래스 내에 override func prepare()를 활용해 데이터를 전달하는 방법만 있지,자식 뷰에서 부모 뷰로 다시 데이터를 받는 방법을 찾긴 어렵더군요. 대리자를 활용하여 데이터를 전달하면 되는데, 저도 초보 수준이라 구현이 쉽지 않았습니다. 해당 기능을 구현하는 데에 저 포함 여러 초보 개발자분들이 고생하실 것 같아서 한 번 작성해 봅니다. 먼저 prepare()와 segue 방식을 이용하여 부모 뷰에서 자식 뷰로 데이터를 전달하는 것 까지 구현이 완료된 기점부터 설명하니 이점 참고해주시길 바랍니다. (제가 설명하는 예시에서 homeVC는 부모 뷰를, bookMarkVC는 자식 뷰를 의미하고, 전달하는 데이터 형식은 문자열 배..
[Dev, iOS] iOS 앱에 카카오 애드핏(Kakao AdFit) 연동 및 구현하기
·
Dev/iOS
구글 애드몹을 연동해놓은 앱이 있는데 해당 앱이 국내 유저 기반이기도 하고, 카카오 애드핏 광고가 더 예쁘고 가지런해 보이더군요. 그래서 구글 애드몹을 버리고(?) 카카오 애드핏으로 갈아타기로 마음먹었습니다. 확실히 구글 애드몹이 사용자 수가 많아서인지 금방 구현하는 법을 찾을 수 있었는데 카카오 애드핏은 없어서 구현하는 김에 포스팅을 작성해보렵니다. 해당 포스팅은 카카오 애드핏 공식 GitHub 문서를 참고하여 작성하였습니다. https://github.com/adfit/adfit-ios-sdk/wiki/배너-광고-연동 1. 먼저 카카오 애드핏 사이트에 접속, 가입(카카오 계정 연동 가능) 해주시고, 아래 절차를 밟으시면 됩니다. 광고 단위명은 그냥 사용자 마음대로 설정하시면 돼요. * 현재 앱에서는 ..
[Dev, iOS] 네트워크 상태 확인하기
·
Dev/iOS
네트워크가 연결되어야만 제대로 작동하는 앱이 대부분이다. 유저가 앱을 클릭했을 때 인터넷 연결 상태가 어떤지 알아보려면, let connectedRef = Database.database().reference(withPath: ".info/connected")connectedRef.observe(.value, with: { snapshot in if snapshot.value as? Bool ?? false { print("connected") } else { print("not connected") }}) 적당한 위치에 추가하여 확인해볼 수 있다.
100두산
'Dev' 카테고리의 글 목록 (4 Page)