본문 바로가기
728x90

전체 글228

빌드한 앱의 권한 제어 앱에서 필요한 권한들을 설정에서 사용자가 허용 여부를 설정할 수 있다. 예전엔 설정 메인에서 빌드 시킨 앱도 보였던것 같은데.. 어느 순간부터 메인에서는 보이지 않고 따로 개인 정보 보호 탭에서 확인이 된다. 개인 정보 보호에서, 사용하려는 정보에 해당하는 카테고리를 선택하여 빌드한 앱의 권한을 변경 할 수 있다. 예를 들어, 위치 권한에 대한 앱 설정에 접근 하고 싶다면 설정 > 개인 정보 보호 > 위치 서비스 에서 빌드 한 앱 이름 확인이 가능하다 참고: https://support.apple.com/ko-kr/guide/iphone/iph251e92810/ios 2023. 1. 11.
설정앱의 특정 화면으로 이동?? 앱의 권한이 필요할 때 설정 요청을 하게 될 때가 있다 예를 들어, 위치서비스를 켜야 할 때 설정으로 이동해서 위치서비스 활성화 요청을 하게 되는데. 이전에는 설정앱의 스키마를 이용해서 바로 화면을 띄울 수 있었다. 그러나 iOS16 부터는 private API로 변경되면서 직접 화면으로 이동할 수 없게 되었다. UIApplication.shared.open(URL(string: "App-prefs:LOCATION_SERVICES")!) 이전에는 위와 같은 방식으로 가능했다. 이제는 UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!, options: [:], completionHandler: nil) 이 방식을 사용해서.. 2023. 1. 6.
CustomView의 super customView가 사용되는 곳에 따라 형태나 동작을 다르게 하고 싶을 때가 있다. 그래서 현재 customView의 위치를 가져오기 위해 방법을 찾아보면 - (UIViewController *) firstAvailableUIViewController { UIResponder *responder = [self nextResponder]; while (responder != nil) { if ([responder isKindOfClass:[UIViewController class]]) { return (UIViewController *)responder; } responder = [responder nextResponder]; } return nil; } 위 와 같은 직접 view가 controller를.. 2023. 1. 4.
Core Data 앱에서 데이터를 관리하는데 사용하는 프레임워크로 userDefault와 달리 좀 더 복잡한 데이터를 저장하는데 사용한다. 얼핏 DB라고 생각할 수 있으나 DB가 아니다. CoreData는 앱이 설치된 해당 기기에서 저장된 데이터를 사용하므로 앱이 삭제되면 데이터도 삭제 되지만, DB는 데이터를 관리하는 시스템으로 여러 사용자나 응용프로그램과 공유 및 동시 접근이 가능하다. *raywenderlich의 Core Data 공부 내용을 바탕으로 작성되었습니다.* - 기본적으로, 코어데이터는 SQLite database를 영구적인 저장소로 사용한다. - Xcode에서 프로젝트를 생성할 때 'Use Core Data' 박스를 체크하면 AppDelegate.swift에서 `NSPersistentContainer` .. 2023. 1. 4.
attributedString 텍스트 양쪽에 이미지 넣기 let attributedString = NSMutableAttributedString(string: "") let leftImageAttachment = NSTextAttachment() leftImageAttachment.image = UIImage(named: "quotes_left") attributedString.append(NSAttributedString(attachment: leftImageAttachment)) attributedString.append(NSAttributedString(string: " \(msg!) ")) let rightImageAttachment = NSTextAttachment() rightImageAttachment.image = UI.. 2022. 12. 26.
Array append(_:) vs append(contentsOf:) append : 하나의 element를 배열 맨 뒤에 추가해준다 var numbers = [1, 2, 3, 4, 5] numbers.append(100) print(numbers) // Prints "[1, 2, 3, 4, 5, 100]" append(contentsOf): 여러개의 elements를 배열 맨 뒤에 추가 해준다. var numbers = [1, 2, 3, 4, 5] numbers.append(contentsOf: 10...15) print(numbers) // Prints "[1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15]" 출처 : https://developer.apple.com/documentation.. 2022. 12. 21.
UIViewController PopUp 위와 같은 팝업을 만들어 볼거에요(with. storyBoard) 1. viewController 'Attribute Inspector'에서 Transition Style은 Cross Dissolve Presentation은 Over Full Screen으로 설정해줍니다. 2. 'Identity Inspector'에서 class를 연결시켜주고 storyboardID를 설정해줍니다. 저는 "pop"으로 해볼게요 3. ViewController에 전체를 덮는 뷰를 올려줍니다.(뒤에 까만뷰가 될거에요) 4. 그리고 팝업 내용이 있을 뷰를 원하는 위치에 올려줍니다(여기선 밑에서 위로 올라오는 하얀뷰가 됩니다) 5. 햐얀뷰의 제약중 bottom에 대해서만 밑으로 안보이게 내려줍니다 하얀뷰의 현재 높이가 200이라.. 2022. 12. 21.
UITableView tableView Cell 거꾸로 그리기 테이블뷰를 뒤집으면 간단하다. // ViewDidLoad에 추가 테이블뷰.transform = CGAffineTransform(rotationAngle: -(CGFloat)(Double.pi)) // cellForRowAtIndexPath에 cell return 전에 셀.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi)) 참고 : https://stackoverflow.com/questions/43480887/load-tableview-from-bottom-scroll-up-reverse-tableview-ios 사용자 터치로 순서 변경 테이블의 셀은 사용자에 의해 편집 될 수 있다. 테이블뷰명.is.. 2022. 12. 19.
GIT Git을 처음 접해본다면 git의 사용법 및 각 명령어에 대해 이해할 수 있는 곳 -> https://backlog.com/git-tutorial/kr/ git의 flow를 실습해볼 수 있는 사이트 -> https://learngitbranching.js.org/?locale=ko Github에 Repository 생성 tip! readme 와 ignore 파일은 그냥 체크체크 해서 생성해주자 불필요하면 나중에 삭제 해주면 되지만 새로 생성해서 추가해주려면 귀찮다 :) Github에 프로젝트 업로드 용량 초과 예방 .gitignore 파일에 'Pods/' 추가 자동으로 git push 시 코코아팟 파일은 untrack 하여 용량 초과 에러 발생 가능성이 줄어든다. 코코아팟을 사용하는 경우 업로드 할 때는.. 2022. 12. 12.