본문 바로가기
728x90

iOS106

keyboard 높이 텍스트필드나 텍스트뷰 같은 사용자의 입력이 필요한 컴포넌트 사용시 키보드를 이용해서 뷰의 높이 또는 위치를 조정 해주어야 할 때가 있다. NSNotificationCenter에 키보드 옵저버를 등록해주고, 옵저버의 selector 함수에서 파라미터로 NSNotification을 설정해주면 userInfo를 통해 키보드의 높이 값을 얻을 수 있는데 이때 사용되는 key에 따라 값을 다르게 얻을 수 있다. UIKeyboardFrameEndUserInfoKey vs. UIKeyboardFrameBeginUserInfoKey 둘 다 키보드의 높이를 받아오지만 처음 로드 시킬 때와 다시 로드 시킬 때 값이 다르게 나온다. // 최초 로드 UIKeyboardFrameEndUserInfoKey ==> NSRect: .. 2023. 2. 1.
URL Scheme 다른 앱 또는 웹페이지 연결 수단으로 URL Scheme을 통해 다른 앱의 실행을 요청하거나 간단한 데이터를 전달 할 수 있다. 1. URL Scheme 문자열을 통해 URL 인스턴스 생성 NSString * url = ["URL Scheme url 입력" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 2. UIApplication의 canOpenURL 메서드를 통해 URL Scheme의 유효성 확인 [[UIApplication sharedApplication] canOpenURL:"URL입력"]; 3. 유효한 URL Scheme으로 확인된 경우 openURL 메서드 호출 [[UIApplication sharedApplication].. 2023. 1. 26.
present된 ViewController에 push 현재 위치한 VC에서 새로운 VC를 present로 보여줄 경우 present된 VC는 navigationController에 종속되어 있지 않기 때문에 또 다른 VC를 push하여 보여 줄 수 없다. 그래서 새로운 navigationController의 rootVC를 만들어 주어야 한다. 1. navigatonController의 rootViewController가 될 = present 될 viewController 설정 @IBAction func policy(_ sender: UIButton) { // present될 policyVC guard let policy = self.storyboard?.instantiateViewController(withIdentifier: StoryboardName.p.. 2023. 1. 26.
Expandable tableView Cell(셀 확장) 셀을 누르면 아래로 상세 내용이 펼쳐지는 UI를 만들 때는 상세 내용을 hidden 시켰다가 셀이 눌리면 보여주는 형식으로 구현하면 된다 1. 셀을 눌렀을 때 보여줄 view를 'myView.isHidden = true' 로 만든다. 2. 셀이 눌리면 myView의 isHidden 상태를 반전 시켜주고, 해당 셀을 reload시켜준다. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { myView.isHidden = !myView.isHidden tableView.reloadRows(at: [IndexPath(row: indexPath.row, section: 0)], with: .automatic) } 3. 셀.. 2023. 1. 26.
빌드한 앱의 권한 제어 앱에서 필요한 권한들을 설정에서 사용자가 허용 여부를 설정할 수 있다. 예전엔 설정 메인에서 빌드 시킨 앱도 보였던것 같은데.. 어느 순간부터 메인에서는 보이지 않고 따로 개인 정보 보호 탭에서 확인이 된다. 개인 정보 보호에서, 사용하려는 정보에 해당하는 카테고리를 선택하여 빌드한 앱의 권한을 변경 할 수 있다. 예를 들어, 위치 권한에 대한 앱 설정에 접근 하고 싶다면 설정 > 개인 정보 보호 > 위치 서비스 에서 빌드 한 앱 이름 확인이 가능하다 참고: 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.