Cell을 생성하고 conerRadius, shadow를 같이 적용해서 실행해보니 제대로 적용되지 않는 문제를 겪었다.문제점cornerRadius를 적용할땐 clipsToBound를 true로 해줘야하고,shadow를 적용할 땐 masksToBounds 를 false로 해줘야한다. 이 두가지를 하나의 뷰에서 하면 안되는것이다!먼저 실행된 기능만 적용되고 후에 적용한것은 되지도 않는다. 그럼 어떻게 할까?해결먼저 해결한 화면을 보자.하나의 뷰에 두가지 기능을 사용할 수 없으니 2개의 뷰를 사용해 각각 적용하는 방식을 선택했다. Cell의 경우 기본적으로 ContentView가 존재하기 때문에...1. ImageView에 cornerRadius 적용2. contentView에 shadow 적용 그리고 con..
iOS 강의를 다 듣고 바로 만들어서 배포해 본 앱이 있는데,, 이번에 다시 보니 정말 배웠던거 그대로 다 넣느라고 이상한게 많아서 수정하면서 정리를 하기로 했다.앱의 기능 중 맘에 드는 곡을 북마크 하면 따로 애창곡 리스트로 볼 수 있는 기능이 있는데, 당시에 UserDefaults를 알게되고 아! 이게 iOS에서 DB처럼 쓰는거구나! 하면서 그냥 사용했다.그러다 옛날 블로그 포스팅으로도 있지만 CoreData 존재를 알고나서 보니 멍청한 짓을 한 거 같아서 이것부터 수정하기로 했다.일단 둘의 차이점을 먼저 알아보자면UserDefaults는 App Setting 정보 같은 간단한 정보를 저장하기에 적합하고CoreData는 복잡하고 큰 데이터를 저장하기 적합하다.CoreData를 데이터베이스 자체로 알고..
IOS 공부를 하면서 이정도 했으면 이제 작은 어플이라도 만들어야 하는거 아닌가 싶어서 어플을 만들려 준비하고 보니...역시 할 줄 모르는 부분이 있었습니다 ㅎㅎ앨범에 있는 사진, 카메라를 이용해 사진을 불러올 수 있는 UIImagePickerController에 대해서 알아보겠습니다!UIImagePickerControllerA view controller that manages the system interfaces for taking pictures, recording movies, and choosing items from the user's media library.사진 동영상을 찍고 사용자 앨범에 사진을 선택할 때 사용할 시스템 인터페이스를 관리하는 컨트롤러 입니다!IOS11부터는 사진을 가져..
Alamofire는 네트워크 통신을 지원해주는 라이브러리입니다.Swift에서 기본으로 지원해주는 URLSession이라는 라이브러리가 있지만, Alamofire를 사용하면 더 간편하게 통신을 할 수 있습니다. Alamofire 사용해보기먼저 Alamofire를 사용하려면 Cocoapods을 설치해야합니다.터미널에 brew가 깔려 있다면 아래 명령어를 이용해 CocoaPods을 설치할 수 있습니다.brew install cocoapods설치가 끝났다면 프로젝트를 만들어 놓고 터미널에서 프로젝트 폴더로 이동합니다.pod init이동한 디렉터리에서 위 명령어를 이용하면 Podfile이라는 파일이 하나 생성됩니다.그 다음 Podfile에 사용할 외부 라이브러리를 넣어주면 됩니다.pod 'Alamofire', '..
처음에 Notification Center를 들었을 땐 상단바에 푸시알림 오는 그건 줄 알고 있었지만,,, 그건 User Notification을 사용하는 것 다음에 공부해서 정리해야겠습니다NotificationCenter를 차근차근 알아보고 사용까지 해보겠습니다! Notification Center 알아보기 Apple Developer Documentation developer.apple.com애플 공식 문서에 있는 설명으로는옵저버에 등록되어 있는 정보를 방송(broadcast)할 수 있는 Notificatioin dispatch mechanism(알림 발송 메커니즘)입니다... 영어가 좀 부족하네요 제가...조금 풀어서 보자면 Notification Center에 이벤트를 등록해 놓고 이벤트가 발생했..
extension ViewController: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return data.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier:..