적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

Swift iOS 앱 개발 169

UICollectionViewDelegate

UICollectionViewDelegate : manages user interactions with the collection view’s contents, including item selection, highlighting, and performing actions on those items. The methods of this protocol are all optional. 컬렉션뷰 셀 선택 및 선택 후 액션 등에 관련한 메서드들을 다루는 delegate로, 이 프로토콜의 모든 메서드는 옵셔널이다. Managing the Selected cells didSelectItemAt : 선택된 cell의 index path를 delegate에게 알려주는 메서드. func collectionView(_ ..

[Swift iOS] Custom Scrollable Sticky Tab Bar 만들기

앱에서의 tab bar 는 보통 하나의 스크롤 형식이 아니라 tab 별로 다른 화면을 보여주도록 되어있는 경우가 많다. 탭 클릭 한 번으로 원하는 위치로 스크롤이 되는 방식은 보통 웹으로 구현할 때 많이 쓰이는 방식으로, Native 앱에서는 따로 제공하는 라이브러리도 없고 구현이 쉽지 않아 custom으로 직접 scrollable 형식의 sticky tab bar 를 만들어보게 되었다. 그리하여 직접 만들어본 tab bar 프로토타입. 코드는 여기에 👉🏻 https://github.com/hongssup/StickyHeaderTab 1) UICollectionView 이용해 base 화면 생성하기 collectionView 자체가 scrollView의 특성을 가지고 있기 때문에, 우선 UICollect..

[Swift iOS] 앱에서 web 페이지 여는 방법 세 가지

iOS에서 webView를 보여주는 방식 3가지 - 외부 브라우저(사파리)로 열기 - SFSafariViewController - WKWebView 1. 외부 브라우저(사파리)로 열기 앱 내부 작동과 무관하게 외부 브라우저에서 여는 방법이다. @objc func openSafari(_ sender: Any) { if let url = URL(string: "https://hongssup.tistory.com") { UIApplication.shared.open(url, options: [:]) } } UIApplication.shared.canOpenURL(url) : if 문에서 이 조건을 추가로 넣으면, 링크가 유효하지 않을 경우 사파리 앱으로 아예 안넘어갈 줄 알았는데 그건 아니더라. 딱히 있고 없..

notification / callback / delegate 사용법

https://yagom.net/forums/topic/cell-%EC%95%88%EC%9D%98-button%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95%EB%93%A4/ 이벤트 발생을 감지하는 방법 Cell 내 버튼을 처리하는 여러가지 방법들. Delgate 패턴 Callback Completion Handler로서 Callback Closure를 사용하는 방법. 예시) 관심상품 추가 보내는 곳 // MyCell lazy var favoriteBtn: UIButton = { let button = UIButton() ... button.addTarget(self, ..

[Swift iOS] detect backspace in empty UITextField

UITextField에서 backspace를 감지하는 법은 두가지로 나뉜다. 1. 존재하는 텍스트를 지울 때 2. 빈 field에서 감지할 때 흔히 사용하게 되는 방법이 1번인데, 빈 textField에서 사용할 경우 백스페이스 감지가 되지 않아 2번의 방법을 알아보았다. 1. Detect Backspace Event : 존재하는 텍스트를 지울 때는 크게 어렵지 않다. textField shouldChangeCharactersIn 함수 내에서 바로 체크를 해줘도 되지만, 다음과 같이 String에 extension으로 Bool 변수를 만들어 놓으면 어디서든 쉽게 확인할 수 있다. extension String { var isBackspace: Bool { if let char = self.cString(..

[Swift iOS] NSMutableAttributedString 문자열 부분 설정

NSMutableAttributedString을 사용하면 하나의 문자열 내에서 편리하게 색이나 폰트, 크기 등의 속성을 변경할 수 있다. 1. addAttribute을 이용한 부분 설정 _name : 설정할 속성(색깔, 폰트 등), value : 설정 값(빨간색, 시스템폰트 등), range : 설정할 범위 func addAttribute(_ name: NSAttributedString.Key, value: Any, range: NSRange) 1) 문자열 부분 색깔 설정 안녕, 나는 빨클러야. label.text = "안녕, 나는 빨클러야." let attributedStr = NSMutableAttributedString(string: label.text!) attributedStr.addAttrib..

[Swift iOS] UICollectionView - Storyboard

UICollectionView 사용하기 까다롭네.. 내 기억이 맞다면 xib 파일 사용하면 collectionview 내에 cell을 바로 넣어서 설정해줄 수 없고 번거롭게도 따로 cell xib 설정을 해줘야 한다고 알고 있다. 그래서 이번엔 스토리보드로 사용해본 UICollectionView 1. 기본 UICollectionView 세팅하기 우선 스토리보드에 UICollectionView를 추가한 후, 다음과 같이 오토 레이아웃을 설정해준다. 그리고 중요한 것. Automatic으로 기본 설정되어있는 Estimate Size를 None으로 바꿔주어야 한다. (custom cell 만들고 크기 설정 다 해줘도 반영이 안되서 이거 때매 몇시간 날려뚬 ㅠ ) 컬렉션뷰를 @IBOutlet으로 연결해주고, U..

728x90
반응형