목록전체 글 (88)
iOS 개발일지
여러분! 셀 선택 시 UI 변경을 ViewController에서 하고 있지는 않았나요? 저는 그동안 TableView나 CollectionView가 선택되었을 때, 항상 didSelectRowAt과 didSelectItemAt만 사용했었거든요. 그러다... 가벼운 UI만 수정하면 되는 쉬운 작업인데, 굳이 ViewController가 알아야 할까? 라는 생각이 든 거죠. 가능하다면 Cell 내에서 변경시키면 좋겠다고 생각해서 알아보니 가능하더라구요...?! 정말 별거 아니지만 코드를 조금이라도 덜 쓰고, 조금이라도 직관적으로 쓰고 싶은게 개발자 마음이잖아요~ UITableView에서는 setSelected 메서드를, UICollectionView에서는 isSelected 프로퍼티를 override 해 사..
LiveActivity란 앱 내의 정보를 잠금화면에서 보여줄 수 있는 기능입니다! ActivityKit을 사용하며, iOS16.1 이상 버전에서 사용 가능합니다. 배달의 민족에서 많이 보셨을 것 같은데요~ 뭔가 신기술같고... 멋있고... 이쁘지 않나요? 저는 개인적으로 좋아하던 기능이라, 직접 구현하려니 조금 신났네요ㅋㅋㅋㅋㅎ 아무튼, 단계별로 따라오면 전혀 어렵지 않습니다! widget 자 우선 File -> New -> Target을 선택하고~ Widget을 검색해 추가해줍니다. Include Live Activity를 꼭 체크해주세요! 그리고 plist에 가서 Supports Live Activities를 추가하고, Value를 YES로 바꾸면 기본 셋팅은 끝! 각 파일 설명 AppIntent :..
평소와 같이 소스트리로 commit하고, push 하려는 순간... 갑자기 에러가 났다며 푸시가 되지 않았다. 사람 겁먹게 모든 태그를 쫙 보여주지만, 문제가 있는 곳은 [rejected] 한 곳! ! [rejected] Korea(3.3.4) -> Korea(3.3.4) (already exists) updating local tracking ref 'refs/remotes/origin/Release' error: failed to push some refs to 'http://~~~.git' hint: Updates were rejected because the tag already exists in the remote. Branch 'Release' set up to track remote bran..
WebView를 통해 이니시스 통합인증을 구현하려고 하니, 성공/실패에 대한 감지와 처리를 ViewController에서 해야 하네..? 인증에 성공 여부에 따라 WebView에서 던져주는 이벤트가 없으니, 인증 프로세스가 종료되었을 때 이동되는 URL에 따라 성공인지 실패인지 감지해야 했다. 다행히 WKNavigationDelegate에서 이러한 상황에 쓸 수 있는 함수를 제공해주니, 바로 사용해보도록 하자! func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url =..
보호되어 있는 글입니다.
뷰의 반은 일반 view, 나머지 반은 collectionView로 구성되어있는 화면 collectionView를 포함한 전체 화면이 스크롤되도록 해야 함 collectionView의 높이만큼 scrollView를 설정해 전체 collectionView의 모든 cell이 scrollView에서 보일 수 있도록 구현 이 때, contentView는 addSubView까지만 하고 constraints는 잡아주지 않는다. // 스크롤뷰 기본 설정 - 충분한 높이로 임의로 설정 scrollView.contentSize = CGSize(width: scrollView.frame.width, height: 1200) contentView.frame = CGRect(x: 0, y: 0, width: scrollVie..
private lazy var upGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipeGesture(_:))) private lazy var downGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipeGesture(_:))) private var modalViewHeightConstraint: NSLayoutConstraint? // 챗뷰 높이 제약조건을 저장할 변수 private var maxModalViewHeight: CGFloat = 0.0 // 최대 높이 저장할 변수 private var minModalViewHeight:..
extension MyViewController: UITextViewDelegate { func textViewDidChange(_ textView: UITextView) { guard let text = textView.text else { return } // 글자수 제한 let maxLength = 100 if text.count > maxLength { textView.text = String(text.prefix(maxLength)) } // 줄바꿈(들여쓰기) 제한 let maxNumberOfLines = 4 let lineBreakCharacter = "\n" let lines = text.components(separatedBy: lineBreakCharacter) var consecutiv..