본문 바로가기
728x90

iOS10

[iOS] 커스텀 버튼 컴포넌트 하이라이트 처리 [iOS] 커스텀 버튼 컴포넌트 하이라이트 처리 이 화면의 버튼을 구현해야 했다. 이 버튼이 이 화면에 한정해서 나오지 않기 때문에, 버튼 컴포넌트를 만들어서 구현해보았다. final class LargeSelectButton: UIButton { private let iconImageView: UIImageView = { let imageView = UIImageView() imageView.contentMode = .scaleAspectFit return imageView }() let topTitleLabel: UILabel = { let label = UILabel() label.font = UIFont.carmuFont.headline1 label.textColor = UIColor.semant.. 2024. 1. 8.
[iOS] MapKit 주소 자동검색 구현하기 [iOS] MapKit 주소 자동검색 구현하기 카뮤 프로젝트에서 iOS 앱으로 주소검색을 하고, 검색된 주소를 탭 하면 다음화면으로 넘어가서 그 위치를 맵에 찍어주는 기능을 개발해야 했다. 카뮤는 네이버 맵을 사용하기로 했었고, 네이버 맵을 활용 해서 자동 검색을 구현하려고 했었다. 하지만, 검색과 관련된 API를 제공하기는 하지만, REST API 방식이라 URLSession 등 기본 프레임워크로 하나씩 설정해주지 않는 한, Alamofire 등 새로운 라이브러리를 써야 하는 점, 개발 시간이 한정적인 점 등 환경적인 요소를 고려하여 일단은 MapKit에서 제공하는 MKSearchCompleter로 자동 검색을 구현하고, 거기에서 얻어지는 좌표를 가지고 네이버 맵에서 reverseGeocoding을 하.. 2024. 1. 7.
[iOS] CoreData Attribute 변경 시 나타나는 Migration 문제 해결(code=134140) [iOS] CoreData Attribute 변경 시 나타나는 Migration 문제 해결(code=134140) iOS Native 앱에서 서버로 관리할 필요가 없는 데이터, 또는 사용자 쪽에서 가지고 있으면 좋은 데이터들을 앱 자체의 영구 저장소인 CoreData에 적용하는 경우가 많다. 물론 Realm 같은 라이브러리를 사용할 수도 있지만, 내가 진행했던 프로젝트의 경우 일단은 iOS를 기반으로 만들어졌고, 다른 OS와의 호환을 고려하지 않았기에 일단은 iOS에서 더 안정적인 CoreData를 선택했었다. 앱이 업데이트되면서 Entity를 변경하거나 Attribute를 변경했어야 했다. CoreData는 version up 기능을 지원하는데, 이 과정에서 이전 저장소와 새 저장소를 구분하고, 변경된.. 2024. 1. 7.
[Swift] init과 Conveience init 그리고 ? init과 Conveience init 그리고 ? 1. init과 Conveience init convenience init과 init은 초기화 메서드(initializer)를 선언하는 데 사용되는 두 가지 다른 방법이다. 이 두 가지 방법은 다음과 같은 차이점이 있다. 1) Designated Initializer (init): 주요 초기화 메서드로, 클래스나 구조체의 주요 속성을 설정하는 역할을 한다. 주로 초기화 과정 중 다른 초기화 메서드를 호출하거나, 필수 속성을 설정하는 역할을 한다. 하나의 클래스나 구조체에는 여러 개의 init 메서드를 가질 수 있으며, 각각의 init 메서드는 다른 매개변수와 초기화 과정을 수행한다(오버라이딩). 2) Convenience Initializer (conve.. 2023. 10. 14.
[UIKit] collectionView 델리게이트 활용 시 주의사항 [UIKit] collectionView 델리게이트 활용 시 주의사항 최근 프로젝트를 진행하다 컬렉션뷰의 셀에 레이아웃이 적용이 안되는 상황을 맞이했다. sizeForItemAt 델리게이트 메서드를 extension에서 구현을 하고 사이즈를 맞췄는데, 예상대로 움직이지 않았다. image 사이즈가 45인데, 뷰 디버거를 활용해서 확인해보니, 외부에 선이 그어져있었고, 셀 자체의 크기가 50으로 설정이 되어 있는 것이다. width 45, height 65로 해서 정확히 사이즈를 맞춰놓았다고 생각했는데, 왜 안맞지? 라고 생각하고 있었다. 그러다 extension을 다시 보게되었는데, Delegate 설정에 문제가 있지 않을까 했다. extension SelectBoardingCrewModalViewCon.. 2023. 10. 10.
[Xcode] The file “.swiftlint.yml” couldn’t be opened because you don’t have permission to view it. [Xcode] The file “.swiftlint.yml” couldn’t be opened because you don’t have permission to view it. – Falling back to default configuration 관련 경고 develop 브랜치를 Pull 받고 빌드를 할 때, sandbox 관련 어떤 업데이트를 하라는 경고가 떠서 change를 눌렀다. 빌드를 하니 아래와 같은 경고가 떴다. 참고 블로그를 참고하여 해결하였다. 위의 것이 Yes로 되어 있었다. No로 해야 한다. Xcode 14에서 Apple은 스크립트 단계에서 소스 파일에 액세스하는 것을 차단할지 아니면 중간 빌드 개체에 액세스하는 것을 차단할지를 빌드 시스템에 알려주는 새로운 플래그 ENABLE_U.. 2023. 10. 7.
728x90