iOS
-
iOS) 실 기기인지 simulator인지 확인하기 in SwiftiOS 2020. 6. 10. 14:40
simulator에서 많은 부분을 테스트해볼 수 있지만, 꼭 실제 기기에서만 할 수 있는 기능들이 있죠. remote 노티라던지 위치라던지요? 이렇듯 시뮬레이터와 실제 기기를 구분해야 할 경우들이 있습니다. 이럴 땐 간단하게 이렇게 구분할 수 있습니다. #if targetEnvironment(simulator) // Simulator #else // Device #endif 혹은 if TARGET_IPHONE_SIMULATOR == 1 { // Simulator } else { // Device } 감사합니다 :)
-
#selector 에 parameter 전달하기iOS 2020. 6. 4. 15:01
addTarget, UIGestureRecognizer 등을 사용할 때 action을 주기 위해 #selector를 사용합니다. 하지만 #selector를 사용할 때는 임의로 파라미터를 전달할 수가 없고 오직 sender 로 버튼이나 제스쳐 같은 대상만을 파라미터로 받을 수가 있습니다. 오늘 알아볼 방법은 원하는 파라미터를 전달할 수 없으니 대신 파라미터가 되는 대상을 원하는 아이로 바꾸는 방법입니다. 바로 예시를 살펴보겠습니다. \ swipe를 할 때 원하는 정보를 함께 전달하고 싶어요 \ 보통 일반적인 스와이프 제스쳐는 이렇게 생성합니다. override func viewDidLoad() { super.viewDidLoad() let swipeGesture = UISwipeGestureRecogniz..
-
collectionView column 개수 정하기 - iPad에서 개수가 달라질 때iOS 2020. 4. 24. 18:15
collectionView의 column(가로)에 보여지는 셀의 개수를 정하고 싶을 때는 flowLayout을 건드리는 방법부터 delegate를 이용하는 방법까지 많은 방법들이 있는데요, 검색해보면 많이 나오니 다들 잘 아실거라 생각해요. 저는 주로 delegate를 이용하는 방법을 사용해왔었는데요, 최근 문제가 발생했습니다. 분명 interItem, inset 등을 모두 0으로 설정했는데!!!! ipad에서 보니까 셀 사이에 여백이 생겨버리더랬죠. ☠️ flowLayout에서 제거해보고 별 짓을 다 해도 없어지지 않던 이 여백... 문제는 itemSize에 있었습니다. 저는 collectionView.bounds.size.width를 원하는 개수만큼으로 나눠서 사용했었는데요, collectionVie..
-
cellForItemAt: 에서 select 해주기iOS 2020. 4. 24. 16:07
cell이 select 되었을 때 셀에 어떤 처리를 해주는 경우가 많이 있죠. cellForItemAt: 에서 원하는 cell을 select 해주려면 어떻게 해야할까요? 접근 먼저 select를 처리해주는 방법부터 알아볼까요? delegate를 이용해 didSelectedItemAt 에서 처리해주는게 가장 대표적이지만 현재 목표와는 맞지 않습니다. 다른 방법으로 cell 자체의 isSelected 를 이용해 isSelected의 값이 변할 때마다 처리를 해주는 방법을 사용해야겠습니다. 활용 오늘은 collectionView의 cell을 선택하면 색이 바뀌는도록 만들어볼게요 :) 먼저 MyCollectionViewCell 을 만들어주고 거기서 isSelect 를 override 해서 색의 색을 바꿔줍니다...
-
ImageView scaleAspectFit 하고 정렬해주기iOS 2020. 4. 23. 16:58
ImageView의 contentMode 중 scaleAspectFit 은 이미지의 비율을 유지하면서 최대한의 크기를 맞춰줍니다. 그리고 나머지 부분은 여백으로 남겨두죠. 문제는 aspectfit을 하면서 동시에 정렬을 할 수는 없다는 것입니다 ㅠㅠ 자동으로 가운데 정렬이 되어버리죠. 아쉽게도 UIImageView에서는 이런 처리를 할 수가 없습니다!! 따라서 만약 scaleAspectFit을 한 이후에 정렬을 해주고 싶다면 별도로 처리를 해줘야 합니다. 제가 소개해드릴 방법은 imageView의 contentMode에서는 scaleAspectFit이 아닌 원하는 대로 정렬을 해주고 UIImage를 aspectFit 해주는 방법입니다. 우선 UIImage를 aspectFit 해줄 extension 입니다..
-
collectionView, tableView reloadData 완료 시점iOS 2020. 4. 22. 18:01
collectionView, tableView 를 새로 그려야 할 경우 가장 먼저 떠오르는 방법은 reloadData() 가 아닐까 싶습니다. 하지만 reloadData()가 끝난 이후에 해줘야 하는 작업들이 있을 수도 있겠죠. 제 경우엔 reloadData()가 끝난 이후에 셀들에다 animation 처리를 해줘야 하는 경우였는데요, 단순히 realodData() 이후에 animation 작업을 해주면 바로 completed 되어버리는 현상을 겪었습니다. cell이 아직 완전히 reload 되기 전에 작업을 해줘서 발생한 문제라고 추측하고 reload가 끝난 시점에 처리해주기로 하였습니다. 먼저 reloadData() 가 발생하면 어떤 일들이 일어나는지 먼저 살펴봐야겠죠? reloadData()가 발생..
-
AppDelegate ?iOS 2020. 4. 22. 13:42
AppDelegate.swift 프로젝트를 생성하면 자동으로 생성되는 source file 입니다. 지금은 SceneDelegate도 추가 되었지만 우선 AppDelegate가 무엇이고 어떤 역할을 하는지, 해왔는지 알아야 SceneDelegate가 왜 등장했는지 알 수 있겠죠? 오늘은 AppDelegate에 대해 알아볼까 합니다. 오늘의 목표는 아래 그림을 박스들을 이해하는 것입니다. AppDelegate.swift source file은 두 가지 주요 기능을 합니다. AppDelegate class를 정의합니다. 만들어진 app delegate(application object)는 앱의 contents가 그려지고, 앱의 상태 변화에 대한 반응을 처리하는 window를 만듭니다. entry point ..
-
Swipe Gesture 와 Pan Gesture 함께 쓰기, Gesture Recognizer simultaneouslyiOS 2020. 4. 10. 15:01
안녕하세요 :) 날이 많이 좋아졌는데 자유롭게 돌아다니기는 쉽지 않은 시국이네요. 세상도 저도 쉽지 시간을 살아가고 있는 것 같아요 😭 빨리 좋은 날이 오길... 🙏 본론으로 들어가서 오늘은 Swipe Gesture와 Pan Gesture 를 함께 사용하는 법을 알아보겠습니다. Swipe Gesture 는 Pan Gesture 를 포함하고 있는 부분이기 때문에 이 둘을 함께 사용하면 정상적으로 작동하지가 않습니다. 검색을 해보면 UIGestureRecognizerDelegate 의 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIG..