본문 바로가기

iOS

(10)
NSCache로 Image Cache를 구현해보자! 보통 URL를 통한 Image Download 작업을 할 때, Kingfisher 라이브러리를 사용한다. 이 때, Kingfisher는 Cache도 지원해주는데 이 Cache를 NSCache로 직접 만들어보자! NSCache로 Image Cache를 구현해보자! 먼저 iOS에는 NSCache라는 것을 지원해준다. Apple 공식 Document에서도 찾아볼 수 있는데 아래와 같다. 설명을 읽어보면 key-value로 Cache를 지원하고 Generic Class이기 때문에 각 Type을 지정해줘야 하는 것 같다. 먼저, Cache없이 url로 이미지를 받아오는 작업을 해보자! 이미지는 아이언맨과 캡틴아메리카로 해봤습니다...ㅎㅎ "Image Download" 버튼을 누르면 URLSession을 이용하여 ..
UICollectionViewCell의 LifeCycle과 PreFetching UIViewControleller의 LifeCyle은 한 번 정리했었지만 자주 사용하는 UICollectionViewCell이나 UITableViewCell의 LifeCycle은 인지하고 않고 있어서 한 번 정리해야 할 것 같다. UICollectionViewCell의 LifeCycle과 PreFetching View와 관련된 작업을 할 때, LifeCycle을 알아야 더 훌륭하게 작업을 할 수가 있다. UIViewController는 처음 공부할 때 부터 인지하고 있어서 괜찮았지만 UICollectionViewCell같은 경우는 단순하게 Reusable만 된다는 것을 알고 LifeCycle을 공부하진 않았다. 단순히 deququeReusableCell로 cell을 만들고, 재사용을 위해서 ReuseQu..
Content hugging vs Compression resistance 차이점 알기! iOS의 AutoLayout Priority 중, Content hugging과 Compression resistance가 있습니다. 아직까지 이 둘을 적용해본적은 없지만 둘이 어떤 것이고 차이점을 알아야 할 것 같아서 정리하려고 합니다. Content hugging vs Compression resistance 차이점 알기 먼저 두 Priority를 알기 전에 intrinsicContentSize를 알고 넘어가야 합니다. 설명에도 나와있지만 view 자체의 본질의 크기입니다. 이 크기가 존재함으로써 UILabel, UIButton, UISwitch 등등 기본적으로 제공되는 view들이 width와 height를 가질 수 있습니다. 이걸 왜 알아야하나?! 바로 앞선 두 Priority가 이 intrins..
setNeedsLayout() vs layoutIfNeeded 차이점 View의 layout을 갱신시키는 메소드들 중 setNeedsLayout()와 layoutIfNeeded()의 차이점을 자세히 몰랐는데 한 번 정리할 필요가 있다고 생각되어 공식문서를 보며 공부해야겠다! setNeedsLayout() vs layoutIfNeeded 차이점 두 메소드의 차이점을 알기전에 먼저 main run loop라는 것을 알아야 합니다. iOS에는 main run loop라는 것이 존재합니다. main run loop동안에 application은 사용자의 이벤트를 받아들이고 개발자가 짜놓은 코드에 따라 적절한 response를 취해줍니다. response가 다 취해지고 다시 main loop에 return이 되면 이제 update cycle로 진입하게 됩니다. update cycle..
UIView의 ContentMode정리 UIImageView에 Image를 넣을때 어떤 비율로 넣을지 정해야 할 때가 있다.이때 UIView.ContentMode를 이용하는데 이때 주요 이용하는 속성을 알아보자.# UIView의 ContentMode 정리기본적으로 top, bottom, left, right 등이 존재하지만 이 속성들은직관적인 속성이므로 따로 정리하지 않고scaleToFill, scaleAspectFit, scaleAspectFill 이 3가지만 정리해보자! 1. scaleToFill 콘텐츠의 비율을 변경하여 View 크기에 맞게 확장하는 옵션 2. scaleAspectFit 콘텐츠의 비율을 유지하여 View 크기에 맞게 확장하는 옵션. 남는 영역은 투명하다. 3. scaleAspectFill 콘텐츠의 비율을 유지하여 View..
Mapkit이 Blank Screen 되었다. Map을 사용할 일이 있어서 Mapkit을 이용하여 개발 중쉬운 예제를 그대로 따라해도 화면이 나타나지 않는 에러를 마주쳤다... # MapKit이 Blank Screen이 되었다. 일단 개발을 하던 도중에 MapKit을 이용한 MkMapView는 아래와 같이 안나오고... 거기에 더해 아래와 같은 에러로그가 발견되었습니다....🙃 The certificate for this server is invalid. You might be connecting to a server that is pretending to be “example.com=0x8b34da0 {NSErrorFailingURLStringKey=https://example.com/test/, NSLocalizedRecoverySuggestio..
CocoaPods를 사용해보자. 세상엔 다양한 오픈소스 라이브러리들이 존재하죠!iOS를 개발하다보면 이런 오픈소스 라이브러리들을 사용해서프로젝트를 진행하고 싶은데... 어떻게 적용하지...?할 때, 바로 CocoaPods를 사용하시면 됩니다!!# CocoaPods를 사용해보자.먼저, CocoaPods가 무엇인지 알아봅시다. CocoaPods
View Controller에 대해 알아보자. 안녕하세요. ☁️ On the Swift의 윤태중입니다. 지난 시간에는 App의 LifeCycle에 대해 공부해보았습니다.이번 시간에는 App의 화면에 해당하는 View Controller의 LifeCycle에 대해 공부해보도록 하겠습니다 :)# View Controller LifeCycle에 대해 알아보자.여러분이 iOS App을 작동시키면 여러 화면을 보실 수가 있을텐데요. 로그인 화면, 회원가입 화면, 개인정보 설정 화면 등등... View Controller가 바로 이 화면(View)를 담당하는 객체입니다! 그리고 App을 실행하면 화면이 바뀔때가 있을 텐데 (예를 들어 로그인할 때?) 이 때 View Controller들은 주어진 LifeCycle에 따라서 화면이 전환 됩니다. (꼭 화면이 전환..