본문 바로가기

iOS

(31)
[iOS] UIRefreshControl UIRefreshControl A standard control that can initiate the refreshing of a scroll view’s contents. 뷰를 아래로 당기며 새로고침하는 기능을 추가하고 싶을 때 사용 class UIRefreshControl : UIControl UIButton, UISwitch 처럼 UIControl 을 상속받는다. (타겟-액션 디자인 패턴 활용) When the user drags the top of the scrollable content area downward, the scroll view reveals the refresh control, begins animating its progress indicator, and notifies you..
[iOS] 뷰 회전 관련 작업 : viewWillTransition viewWillTransition(to:with:) Notifies the container that the size of its view is about to change. 뷰의 사이즈가 바뀔 때 호출되는 함수이다. func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) size : 컨테이너 뷰의 새로운 사이즈 coordinator : 사이즈 변화를 관리하는 transition coordinator object (?????) You can use a transition coordinator object to perform tasks that are related to a transit..
[iOS] View의 Life-Cycle (생명주기) 뷰의 상태변화 감지 메소드 뷰가 화면에 보여지는 상태의 변화나, 뷰의 레이아웃에 변화가 생기면 뷰 컨트롤러는 그에 맞는 메소드를 호출한다. 뷰의 Life-Cycle func viewDIdLoad() 뷰 계층이 메모리에 로드된 직후 호출되는 메소드 메모리에 처음 로딩될 때 1회 호출되는 메소드로, 메모리 경고로 뷰가 사라지지 않는 이상 다시 호출되지 않음 ⬇️ func viewWillAppear(_ animated: Bool) 뷰가 뷰 계층에 추가되고, 화면에 표시되기 직전에 호출되는 메소드 다른 뷰로 이동했다가 되돌아오면 다시 호출되는 메소드 화면이 나타날 때마다 수행해야 하는 작업을 이 함수 안에 구현하면 좋아용 ⬇️ func viewDidAppear(_ animated: Bool) 뷰가 뷰 계층에 추..
[iOS] UIVisualEffectView UIVisualEffectView An object that implements some complex visual effects. class UIVisualEffectView : UIView let visualEffectView: UIVisualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .regular)) 뷰에 블러 효과를 주고 싶을 때 사용하는 클래스! 왼쪽부터 차례로 style을 regular, dark, prominent 로 적용한 화면이다.
[iOS] 디자인 패턴 | Target - Action Target-Action 디자인 패턴 Target-Action 디자인 패턴에서 객체는 이벤트가 발생할 때 다른 객체에 메시지를 보내는 데 필요한 정보를 포함한다. 액션은 특정 이벤트가 발생했을 때 호출할 메소드를 의미하고, 타겟은 액션이 호출될 객체를 의미한다. 이벤트 발생 시 전송된 메시지를 액션 메시지라고 하고, 타겟은 프레임워크 객체를 포함한 모든 객체가 될 수 있지만 보통 컨트롤러가 된다. 직접 타겟이 될 객체에 액션에 해당하는 메소드를 호출하면 될텐데 굳이 타겟과 액션을 지정하고 디자인 패턴으로 활용하는 이유는? 만약 특정 이벤트가 발생했을 때, abc라는 이름의 메소드를 호출해야 하는 상황이라고 가정해보자. 그런데 이 abc라는 (액션)메소드는 A라는 클래스에도, B라는 클래스에도 정의되어 있..
[iOS] 디자인 패턴 | Singleton 싱글턴 (Singleton) 싱글턴은 특정 클래스의 인스턴스가 오직 하나임을 보장하는 객체를 의미합니다. 싱글턴은 애플리케이션이 요청하는 횟수와는 관계없이, 이미 생성된 같은! 하나의! 인스턴스를 반환한다. 즉, 앱 내에서 특정 클래서의 인스턴스가 딱 하나만 있기 때문에 다른 인스턴스들이 공유해서 사용할 수 있다. ➡️ 앱 내에서 공용으로 사용되는 인스턴스 임의로 메모리에서 해제해주지 않는 이상 프로그램이 실행되고 끝날 때까지 메모리에 유지된다. class UserInfo { static let shared: UserInfo = UserInfo() var ID: String? var age: Int? private init() { } } static let : let 으로 상속을 금지하고 있으며, sta..
[iOS] UIActivityIndicatorView UIActivityIndicatorView A view that shows that a task is in progress. 어떠한 작업이 진행 중임을 나타내는 뷰 (로딩 중 아이콘이라고 생각하면 됨 ! 실제로 데이터가 로드되기 직전까지 animating 하다가 로드 되면 stop, hide) class UIActivityIndicatorView : UIView // style : large, medium init(style: UIActivityIndicatorView.Style) func startAnimating() func stopAnimating() // 애니메이션이 멈췄을 때 뷰를 hidden 처리해 줄 것인지를 결정 var hidesWhenStopped: Bool { get set }
[iOS] 뷰의 재사용 뷰의 재사용 iOS 기기는 한정된 메모리를 가지고 애플리케이션을 구동한다. 사용자에게 보여주고 싶은 데이터가 매우 많고, 그만큼 많은 뷰가 필요하다면? 화면에 표시할 수 있는 뷰의 개수는 한정적이지만 표현해야 하는 데이터가 매우 많은 경우, 반복된 뷰를 생성하기보다는 뷰를 재사용한다. 사용할 수 있는 메모리가 작아서 데이터의 양만큼 많은 뷰를 생성하는 것은 메모리를 많이 낭비하기 때문이다. 뷰를 재사용하면 메모리를 절약하고, 성능 또한 향상시킬 수 있다. 대표적인 예 UITableViewCell UICollectionViewCell 재사용 원리 테이블뷰 및 컬렉션뷰에서 셀을 표시하기 위해 데이터 소스에 뷰(셀) 인스턴스를 요청한다. 데이터 소스는 요청마다 새로운 셀을 만드는 대신, 재사용 큐(Reuse ..