분류 전체보기
-
Table view cell 구성iOS/UIKit 2022. 7. 8. 23:19
Table view cell을 위한 클래스 생성 이번에는 헤더와는 달리 오직 코드만으로 cell을 만들어보자. 우선 UITableViewCell을 상속받는 클래스를 생성한다. class AccountSummaryCell: UITableViewCell { override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) setup() layout() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } extension Acc..
-
메모리 분할 방식운영체제 2022. 7. 8. 00:20
가변 분할 방식 프로세스의 크기에 맞춰서 연속적인 메모리를 할당하는 방식이다. 장점 각 프로세스를 연속된 메모리 공간에 배치할 수 있다는 장점이 있다. 단점 - 외부 단편화(external fragmentation) 위 그림에서 프로세스 C를 종료한 다음 용량이 30KB인 새로운 프로세스를 실행한다고 가정하자. 전체 빈 공간의 크기는 40KB이지만, 20KB 크기의 두 조각으로 나뉘어졌기 때문에 새로운 프로세스를 위한 공간을 할당할 수가 없다. 이와 같이 작은 조각이 발생하는 것을 단편화라 한다. 그리고 이러한 상황은 프로세스 외부에서 발생하는 단편화이기 때문에 외부 단편화라고 부른다. 이러한 외부 단편화를 없애기 위해서는 실행중인 프로세스의 자리를 옮겨 메모리를 통합해야 할 것이다. 그러나 이러한 방법..
-
UITableView Header 추가iOS/UIKit 2022. 7. 7. 22:34
view controller 생성 및 UITableView 추가 background만 설정한 기존의 view controller를 없애고 새로운 view controller를 만들자. 그 다음 UITableView를 사용해야 하기 때문에 다음과 같이 작성하자. 이 상태에서 root view controller로 설정한 뒤 실행하면 3개 cell이 있는 것을 확인할 수 있다. import UIKit class AccountSummaryViewController: UIViewController { let games = [ "Pacman", "Space Invaders", "Space Patrol", ] var tableView = UITableView() override func viewDidLoad() {..
-
Scroll Views 개요iOS/UIKit 2022. 7. 7. 00:09
UIScrollView UICollectionView, UITableView의 상위 클래스이다. 이 view를 사용하기 위해서는 parent view와의 constraint 뿐만 아니라, 내부의 view에 대한 constraint도 설정해야 한다. 그리고 내부의 모든 view는 size가 필요하다. 방향에 따라 width, height 둘 중 하나가 설정되어 있어야 한다. 장점 a. 모든 view를 scrollable하게 만들 수 있다. b. minimalist c. 내부 view에 대한 완전한 control을 가질 수 있다. d. 긴 페이지에 사용하기 좋다. 단점 a. reload를 위한 built-in mechanism이 없다. b. built-in affordance가 없다. (ex. 위로 스크롤하..
-
Tab view 구성하기iOS/UIKit 2022. 7. 6. 23:36
extension 추가 다음 extension을 추가하자. extension UIViewController { // status bar의 배경색 설정 func setStatusBar() { let navBarAppearance = UINavigationBarAppearance() navBarAppearance.configureWithTransparentBackground() // to hide Navigation Bar Line also navBarAppearance.backgroundColor = appColor UINavigationBar.appearance().standardAppearance = navBarAppearance UINavigationBar.appearance().scrollEdgeA..
-
Container View ControllersiOS/UIKit 2022. 7. 6. 23:04
Container View Controller 여러 view controller들을 하나의 인터페이스로 결합해주는 view controller를 말한다. 예를 들어, 수직적인 구조의 여러 화면들을 navigation 구조로 구성하고자 한다면 navigation controller를 사용하면 되고, 수평적인 구조의 화면들을 구성하고자 하면 tab bar controller를 사용하면 된다. navigation controller navigation controller에서 화면을 보여주는 방법은 2가지가 있다. 첫번째는 push, pop을 통해 여러 화면들의 stack을 만드는 것이다. 두번째는 present, dismiss를 통해 modal로 화면을 보여주는 것이다. push, pop 첫번째 방식은 다음과..
-
온보딩 화면 구성 - (2)iOS/UIKit 2022. 7. 6. 21:43
온보딩, 로그인 시 화면 이동 구현 AppDelegate에게 로그인 처리 위임 LoginViewController에서 AppDelegate에게 로그인 처리를 위임해야만 화면 이동을 할 수 있다. 우선 이러한 구조를 위임 패턴을 통해 구현할 것이다. 우선 LoginViewControllerDelegate 프로토콜을 정의하고, 로그인 처리를 위임하는 didLogin 메서드를 선언하자. LoginViewController가 어떤 데이터를 delegate로부터 되받을 필요는 없기 때문에 sender와 같은 매개변수는 필요없다. protocol LoginViewControllerDelegate: AnyObject { func didLogin() } 그 다음 LoginViewController에서 delegate ..
-
위임 패턴(Delegate Pattern)iOS/UIKit 2022. 7. 6. 20:14
패턴 개요 클래스나 구조체가 다른 타입의 인스턴스에게 일부 책임을 넘겨주는 디자인 패턴이다. 먼저, 위임되는 책임을 캡슐화한 프로토콜을 구현한 다음, 책임을 넘겨받을 인스턴스가 해당 프로토콜을 따르게 하는 방식으로 구현한다. 책임을 위임하는 객체는 위임받는 객체의 프로토콜 메서드를 호출함으로써, 이벤트가 발생했음을 알리고, 처리를 하게 만드는 것이다. 예시 날씨 데이터를 fetch받아서 view에 보여주는 작업을 생각해보자. 우선 Weather 구조체를 정의한다. struct Weather { let city: String let temperature: String let imageName: String } 그 다음 날씨를 fetch한 이후 처리하는 책임을 위임받는 WeatherServiceDelegat..