본문 바로가기

iOS50

[흡구오디] 네이버 지도에서 현재 위치 가져와서 현재 위치를 지도에 띄우기 안녕하세요 오늘은 삽질 100번하고 알아낸 사용자의 현재 위치 가져와서 띄우기!를 공유해볼게요 이번 글에서는 네이버 지도 SDK를 이용해 앱에서 현재 위치를 지도에 띄우는 방법을 소개합니다~ 우선 우리는 지도에 사용자의 현재 위치를 띄우기 위해서 무엇을 할꺼냐!현재 위치 좌표 가져오기 -> 네이버 지도 기능으로 그 좌표로 카메라 이동시켜서 -> 화면에 사용자의 위치 띄워주기!1. 준비 작업필수 라이브러리 설치하기: 저는 네이버 지도 sdk를 SPM으로 깔아줬어요 https://github.com/navermaps/SPM-NMapsMap.git GitHub - navermaps/SPM-NMapsMapContribute to navermaps/SPM-NMapsMap development by creating.. 2025. 8. 11.
[흡구오디] 스크롤뷰 구현하기 | 지도뷰 + 스크롤뷰 조합 안녕하세요 이제 detailView 만들 차례! DetailView 설명디테일 뷰는 상단에 전 화면에서 찍은 좌표에 마커가 있는 지도가 고정되어 있고,아래에는 스크롤 뷰로 해당 장소에 대한 설명들을 적을 수 있는 화면이다. 이렇게 네비게이션 바 아래에 크기 200으로 뱌치해줬다.코드는 이러함 NSLayoutConstraint.activate([ // 이럴게 내비 바 바로 아래에 고정! mapView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor), mapView.leadingAnchor.constraint(equalTo: leadingAnchor), mapView.trailingAnchor.constraint(e.. 2025. 7. 17.
[흡구오디] Main 스토리보드 삭제하는 법! | 네이버 지도 마커 좌표 받아오기 안녕하세요 스토리 보드 삭제하기탈 스토리보드를 하기 위해선 main 스토리보드를 없애고 코드 기반으로 바꾸는 작업이 필요합니다. 이과정에 그냥 파일을 지우고 끝~이 아니라 몇가지 설정을 해줘야하더라구요 저는 https://storing.tistory.com/43 블로그를 참고했습니다! 요소 추가 시 주의 점요소 추가할 때addSubView 해야하고 레이아웃 잡아줘야 화면에 나온다! (이 사이 뻘짓으로 n시간 날림...)마커 좌표 받아오기이제 오늘의 할 일마커의 위도 / 경도 값 데이터 넘겨주기! 제가 만든 커스텀 마커는 엄밀히 말하자면 Yes 이미지 No 마커이기 때문에마커의 좌표를 따오는 것이 아니라 지도 뷰의 센터 좌표(=마커 좌표)를 가져와야함! let center = addView.mapView... 2025. 7. 17.
[흡구오디] 네이버 지도 위에 마커 표시하기 | 마커 고정하기 이번 단계에서는 addView에서 화면(지도) 정중앙에 마커를 표시한다.이때 지도가 움직이더라도 마커는 계속 화면 정 중앙에 위치한다. 다음화면으로 가는 버튼을 누르면 마커가 가르틴 곳의 위치 정보를 가져온다! 그럼 렛츠고 우선 지도 이동과 마커를 이해하기 위해선네이버 지도의 카메라와 마커에 대해 이해해야한다. 카메라 변경 이벤트 어떤 이유에 의해서건 카메라가 움직이면 카메라 변경 이벤트가 발생합니다. NMFMapView를 사용 중인 뷰 컨트롤러에 NMFMapViewCameraDelegate 프로토콜을 선언하고, -mapView:addCameraDelegate로 등록하면 카메라 변경 이벤트를 받을 수 있습니다. 카메라의 위치가 변경되면 -mapView:cameraIsChangingByReason: 콜백 .. 2025. 7. 16.
[흡구오디] 내비게이션 컨트롤러 코드로 구현하기 | 화면 이동 이번에는 코드로 내비게이션 컨트롤러를 구현해볼거예요 SceneDelegate 파일에 아래와 같이 코드를 입력해주면 됩니다.// 파일 위치: SmokingAreaOdi/SceneDelegate.swiftimport UIKitclass SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? // 앱 화면을 담는 윈도우 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene =.. 2025. 7. 16.
[흡구오디] 스토리보드 파일 없애고 코드로 새롭게 시작하기 안녕하세요 방치되어있던 흡구오디 앱을 다시 제작해보려고 합니다. 이참에 새롭게 싹 밀고 새로 시작하겠습니다. 파이어베이스, 네이버 지도 연결만 놔두고 모든 것을 초기화 했어요. 그런 뒤 메인 뷰에 네이버 지도를 깔고오른쪽 하단에 추가 버튼을 만들어놨습니다.//// MainView.swift// SmokingAreaOdi//// Created by 이상지 on 7/14/25.//import UIKitimport NMapsMapfinal class MainView: UIView { let mapView = NMFMapView() let addButton = UIButton() // 초기화 메서드 (코드로 UI 작성 시 필수) override init(frame: CGRect) { s.. 2025. 7. 16.
[Swift] TableView의 모든 것을 알아보기!!! 안녕하세요..? 저는 ㅇㅅㅈ이고요오늘은 테이블뷰에 대해서 좀 더 자세히 공부해보았어요 그럼 정리 시작! iOS 앱 개발에서 많이 쓰이는 UI 컴포넌트 중 하나가 바로 UITableView! (그치만 컬랙션뷰가 더 많이 쓰인다는 사실)수십 개, 수백 개의 데이터를 스크롤 가능한 리스트 형태로 보여줄 때 사용하며, 성능과 유연성 모두 뛰어남이 글에서는 TableView의 기본 구조부터 작동 메커니즘, 실전 코드까지 차근차근 정리해보겠어요TableView란?iOS에서 여러 개의 데이터를 세로 방향으로 나열해 보여주는 컴포넌트-> 그래서 위아래로 쭈르륵 스크롤 가능)UICollectionView보다 구조가 단순하고 리스트 형태 UI에 최적화되어 있음-> 현업에서는 더 고도화된 사용을 위해 컬랙션 뷰를 주로 쓴다.. 2025. 5. 20.
[Swift] 테이블뷰 메커니즘 구성하는 법 안녕하세요 오늘은 테이블뷰를 구성하는 방법에 대해 알아보아요 레쯔고! 테이블뷰는 많은 데이터를 효율적으로 보여주기 위한 리스트 UI 컴포넌트임!화면에 보이는 셀만 메모리에 올리고, 스크롤할 때 재사용하면서 새로운 데이터를 표시함전체 메커니즘UITableView: 뷰 컨트롤러 안에 들어가는 리스트 뷰임ㅇㅇ 테이블 뷰 자체는 데이터가 없음 → 데이터는 따로 전달해줘야 함DataSource 프로토콜:테이블뷰가 몇 개의 셀이 필요한지, 각 셀에 어떤 데이터를 넣을지 묻는 인터페이스꼭 구현해야 하는 2가지 메서드 있음:numberOfRowsInSection: 몇 개의 셀이 필요한지 반환cellForRowAt: 각 셀에 어떤 내용을 표시할지 반환UITableViewCell: 셀 하나하나를 의미! 셀은 dequeue.. 2025. 5. 10.
[swift] 동기와 비동기 동기(Synchronous)와 비동기(Asynchronous)는 작업 실행 순서와 처리 방식에 관련된 개념임Swift에서는 특히 async/await, DispatchQueue, completion handler 같은 방식으로 비동기 처리를 많이 사용함✅ 동기(Synchronous)작업이 순차적으로 실행됨앞 작업이 끝나야 다음 작업이 실행됨코드 흐름이 직관적이지만, 시간 오래 걸리는 작업이 있으면 앱이 멈춰 보일 수 있음func fetchData() -> String { // 서버에서 데이터 가져온다고 가정 return "데이터"}let result = fetchData() // 완료될 때까지 기다림print(result)✅ 비동기(Asynchronous)작업이 백그라운드에서 실행되고, 바로.. 2025. 4. 29.