deprecated/꼼꼼한 재은씨 시리즈 38

사이드 바 실제 적용시 고려하면 좋은 것들

내가 참고하는 외부 라이브러리의 사이드 바는 테이블 뷰이으로 헤더를 지정할 수 있다. // 테이블 뷰의 헤더 역할을 할 뷰를 정의한다 let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 70)) headerView.backgroundColor = .brown // 테이블 뷰의 헤더 뷰로 지정한다. self.tableView.tableHeaderView = headerView 다음과 같이 헤더를 지정하면 더욱 좋은 UI를 만들 수 있다. 또한 헤더 뷰를 컨테이너로 하여 안에 레이블이나 이미지를 넣어 커스터마이징 할 수도 있다. 이미지의 마스킹 효과 self.profileImage.layer.corner..

[iOS14] 재사용 메커니즘

재사용 메커니즘 : 테이블 뷰가 출력해야할 데이터가 많을 경우, 이를 한꺼번에 셀로 만들어 처리하면 메모리 소모가 많아 스크롤이 버벅대는 현상이 발생한다 --> 재사용 메커니즘은 이 같은 현상을 방지하고 물흐르듯 자연스러운 스크롤을 제공하기 위해 도입한 개념이다. 테이블 뷰는 표현해야할 목록이 아무리 많아도, 목록 전부를 한꺼번에 셀로 생겅하지 않는다 메모리를 절약하기 위해서 화면에 보여줄 수 있는 딱 그만큼만 셀을 생성해서 출력한다. 나머지 셀은 스크롤이 발생했을 때 생성해서 목록에 추가하며 동시에 스크롤에 의해 화면에서 벗어난 셀은 목록에서 뺀다. 이때, 매번 새로운 셀을 계속 생성하는 것은 부담일 수 있다. 또한 화면에서 벗어나 목록에서 제외된 셀 객체를 메모리에서 아예 지워버리는 것 역시 성능상 ..

SWRevealViewController (사이드바) - 외부라이브러리 1

외부 라이브러리 다운 받는 주소 : github.com/John-Lluch/SWRevealViewController John-Lluch/SWRevealViewController A UIViewController subclass for presenting side view controllers inspired on the FaceBook and Wunderlist apps, done right ! - John-Lluch/SWRevealViewController github.com 사이드 바 구현하기 위한 라이브러리 사용 방법 : 1. SWRevealViewController.m 와 SWRevealViewController.h 를 자신의 프로젝트에 추가하기 - 추가시 브릿징 헤더 연결 필수!! - 파일 추가..

커스텀 클래스(3) - 커스텀 스테퍼

컨트롤 커맨드 스페이스를 함께 누르면 특수 기호 입력창이 나타나는 것을 확인할 수 있다. 자 커스텀 스테퍼도 어려울건 없다. [ 왼쪽 버튼 - 레이블 - 오른쪽 버튼 ] 으로 구성된다. 이것도 뭐 딱히 특별할 건 없는데, 우리는 스토리 보드에서 view를 통해 스테퍼를 추가하는 방법도 한번 보자. 자 스토리보드를 이용해서도 만들 수 있다. 근데 @IBDesignalbe 이 코드가 있지?? 이 코드는 스토리보드에서도 내가 만든 커스텀 코드를 디자인해서 보여주는건데, 저기 우측 상단 - 아이폰 그림 위에를 자세히보면 어딘가 문제가 있는지 feild failed 볼 수 있는데, 원래는 진짜 휴대폰에 나타나는 형태로 보여지나 어딘가 문제가 생겨서 현재 저렇게 나온다. @IBInspectable : 우리가 만든 ..

커스텀 클래스(1) - 커스텀 버튼

꼭 학습해야할 개념 2가지 * 초기화 메소드의 델리게이션 * 프로퍼티 옵저버 -- 이 두가지 개념은 개념이 길어서 포스팅 다시하기 -- // // CSButton.swift // Chapter03-CSButton // // Created by Hamlit Jason on 2021/03/18. // import UIKit public enum CSButtonType { case rect case circle } class CSButton: UIButton { // required가 붙은 메소드는 필수 구현 메소드이다. required init(coder aDecoder: NSCoder) { // init구문은 스토리보드 방식으로 객체를 생성할 때 호출되는 초기화 메소드 super.init(coder: aD..

알림창 커스터마이징

알림창 커스터마이징은 기본적으로 private api 이기 때문에 정보가 많이 없지만 그럼에도 불구하고 우리는 커스텀할 수 있다. * 추가정보 - 접근 제한자의 허용 범위 * private fileprivate internal public open 같은 클래스 o o o o o 같은 파일 o o o o 같은 모듈, 프로젝트 o o o 모듈 외부 o o 모듈 외부 & 수정가능 o 커스터마이징을 위해선 애플에서 허용해준 범위 내에서 가능한데, 프라이빗 api와 open api가 있어서 알림창의 경우는 프라이빗 api 이다. let alert = UIAlertController(title: nil, message: "이번 글의 평점은 다음과 같습니다.", preferredStyle: .alert) let ok..

네비게이션 바 커스터마이징

네비게이션 바의 구성 [ 좌측 아이템 - 센터 - 우측 아이템 ] 으로 구성된다. 타이틀 부분에서 두줄로 표현하기 위해서는 let nTitle = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40)) nTitle.numberOfLines = 2 nTitle.textAlignment = .center nTitle.font = UIFont.systemFont(ofSize: 15) nTitle.text = "58개 숙소 \n 1박(1월 10일 ~ 1월 11일)" self.navigationItem.titleView = nTitle 이런식으로 코드작성하면 된다. 그런데 이런 경우가 있다. 네비게이션 바가 [ 좌측 아이템 - 센터 - 우측 아이템 ] 이렇게 3개..

탭바 커스터마이징

backgroundImage - 탭 바 전체에 적용되는 배경 이미지. 이미지 크기가 작으면 늘려서 채움 selectionIndicatiorImage - 현재 이 탭이 선택되어 있음을 알려주는 이미지 쉽게 말해서 저기 색바뀐거 보이지? 그거 말하는 거임 image - 탭이 선택되지 않았을 때 표시되는 이미지. selectionIndicatiorImage속성에 값이 설정되지 않았으면 image 속성에 등록한거 사용함 titleTextAttribute - 탭 바 아이템의 아이콘 이미지 아래에 표시될 텍스트 속성 폰트 크기나 종류 등을 설정 -- 중요한 개념 clipsToBounds 속성 외형 프록시 객체 앱 델리게이트 클래스 교체 방법 애니메이션 처리 방법 상식 플러스 - 탭바 컨트롤러 연결..