본문 바로가기

분류 전체보기

(355)
091 ~ 096. Reordering Cell, Prefetching API, Table View Controller and Static Cell. Reordering Cell 시계 앱의 편집 모드에서 오른쪽에 표시되는 버튼이다. 드래그를 통해 셀의 순서를 재정의 할 수 있다. // // ReorderingCellViewController.swift // TableViewPractice // // Created by Martin.Q on 2021/10/04. // import UIKit class ReorderingCellViewController: UIViewController { var list1 = [String]() var list2 = [String]() var list3 = ["iMac Pro", "iMac 5K", "Macbook Pro", "iPad Pro", "iPad", "iPad mini", "iPhone 8", "iPhone 8..
아이폰 13 필름 요약 서론 왠지 모르게 동시에 아이폰을 구입하는 사람들이 많아져 내 것을 고르는 김에 지인들에게도 뿌려 보고자 함께 만들어 보았다. 정확한 자료도 아니고, 아는 브랜드만 적당히 조사한 거니 확인만 하면 좋을 듯하다. 본론 이미지로 얼마나 잘 볼 수 있을지 모르겠으니 시트를 링크한다. https://www.icloud.com/numbers/0Tavj2iWiaseZBgQ7NindF8Tw#protection_film 결론 개인적으로 파워서포트사의 필름의 질이 뛰어난 것을 알고 있기 때문에 무지성으로 구매하려 했지만, 아이폰에 노치가 생기면서 더 이상 풀커버로는 재단하지 않는 듯하다. (솔직히 필름은 다른 거 다 써 봤는데 거기서 거기고 파워서포트가 가장 우월했다.) 아이폰 12 시리즈부터 화면의 강도가 대폭 향상되..
087 ~ 090. Edit Mode, Row Action and Swipe Action Edit Mode Edit Control 시계 앱에서 좌상단의 Edit을 터치하면 오른쪽의 편집 모드로 전환된다. 편집 모드에선 셀을 추가하거나 삭제할 수 있고, 순서를 변경할 수도 있다. 셀의 좌측엔 Edit Control이 표시되고, 지금처럼 삭제 버튼이 표시되거나 추가 버튼을 표시할 수 있다. 셀의 우측엔 Reorder Control이 표시되고, 해당 부분을 드래그 하여 원하는 순서로 변경할 수 있다. 편집 모드에서의 작업 종류는 메소드 구현에 의해 결정된다. 삭제 등의 기능을 구현하고자 한다면 연관된 delegate 메서드를 구현해야 하고, 구현하지 않는다면 해당 컨트롤이 표시되지 않는다. Swipe to Delete swipe 하여 표시할 수 있는 삭제 기능은 Swipe to delete라고 부..
081 ~ 086. Customizing Section, Section Index Title, Table Header View, Table Footer View and Managing Selection Customizing Section Custom Header // // CustomSectionViewController.swift // TableViewPractice // // Created by Martin.Q on 2021/09/09. // import UIKit class CustomSectionViewController: UIViewController { @IBOutlet weak var tableView: UITableView! let list = Region.generate() override func viewDidLoad() { super.viewDidLoad() } } extension CustomSectionViewController: UITableViewDataSource { fun..
'Command MergeSwiftModule failed with a nonzero exit code' 해결하기 서론 강의 구독도 끝났고, 추석 연휴도 얼마 안 남았고, 남은 기간 동안 블로그 정리를 조금 하고, 휴식도 좀 취했다. 추석 연휴가 끝나고, 백신 접종 후 다시 공부를 시작하려니 문제가 좀 생겼다. 그 사이 iOS 15가 배포되고, 새 아이폰이 나오고, 이에 따라 새 Xcode 업데이트가 생겼는데 이런 메이저 업데이트는 처음인데도 불구하고 별 의심 없이 올렸던 게 화근이었다. 본론 증상은 이러하다. 새 프로젝트의 경우에도 해당하는지는 모르겠지만 이전에 사용하던 프로젝트 파일을 빌드하려는 경우에 Build Target을 iOS13.X나 iOS14.X로 설정하는 경우 시뮬레이터의 버전이 어떤 것이건, 단순한 빌드를 진행하건 위와 같이 Command MergeSwiftModule failed with a no..
173 ~ 174. Advanced Topic Availiability Condition API 가용성을 확인하는 방법이다. 새로운 OS가 출시되면 새로운 기능을 위한 API가 추가된다. 매번 최신 API를 사용한다면 좋겠지만 현실적으로 불가능한 경우가 많다. 새 애플리케이션을 생성하면 배포 타깃은 자동으로 최신 버전으로 지정된다. 이 상태로 배포하게 되면 해당 버전보다 낮은 상태의 기기들은 이 앱을 사용할 수 없다. 따라서 최신버전 보다는 2~3 정도 낮은 버전을 타깃으로 설정한다. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. navigati..
170 ~ 172. Selector, Keypath, Dynamic Access Selector (셀렉터) Selector(셀렉터)는 UIkit에서 method를 지칭하거나, 속성의 getter나 setter를 지칭할 때 사용한다. '지칭한다.'의 의미는 호출한다는 의미가 아닌, 대상을 가리키는 특별한 인스턴스를 얻는다는 뜻이다. 이러한 인스턴스는 버튼과 메소드를 연결하거나, 제스쳐와 메소드를 연결할 때 사용한다. Syntax #selector(methodName) #selector(getter: propertyName) #selector(setter: propertyName) struct Figure { let color: UIColor = .blue func draw() { print("draw") } } let selector = #selector(Figure.draw) 결과 ..
2021 Apple KeyNote Autumn 서론 지난 WWDC는 카탈로그방식으로 정리하기에 부적합한 발표들이라 건너 뛰고... 4월에 있었던 봄 이벤트에 이은 가을 이벤트 정리이다. 마찬가지로 사진과 내용은 모두 apple.com 에서 사용. 본론 결론 아이폰 메인 페이지는 내가 생각했던 거랑 영 딴 판이다. 꿈에 나올 것 같은데... 본 요약본은 클리앙에도 함께 올라갔다. 돌아다니다 봤다는 그건 내 글이다. ^^
2021 Apple KeyNote Spring 서론 지난 날 잉여롭게 보고 정리해서 주변과 커뮤니티에 뿌렸던 정리 파일이다. 이전 블로그에선 글로만 정리 했었고, 다른 커뮤니티에 투고 할 땐 엑셀로 했었는데, 무슨 바람이 불었는지 쓸 데 없이 잡지 형식으로 만들어 봤다. 사진과 내용은 모두 apple.com 에서 사용. 본론
162 ~ 169. Error Handling (에러 처리) Error Handling (에러 처리) 에러가 발생하면 보통 프로그램이 종료되지만, 미리 판단하여 처리하게 되면 종료를 막을 수 있다. Compiletime Error & Runtime Error (컴파일 타임 에러와 런타임 에러) 에러는 컴파일타임 에러와 런타임 에러가 있다. 컴파일 타임 에러는 대부분 문법과 관련된 에러로, 컴파일러가 제공하는 정보로 쉽게 해결할 수도 있고, 자동 수정 기능을 제공하기도 한다. 런타임 에러는 프로그램이 실행중인 동안 발생한다. 문법적인 에러가 아닌 기기 상태나, 리소스의 상태 등 여러 이유로 발생할 수 있다. Error Protocol (에러 프로토콜) 에러 처리에 사용되는 에러 형식은 에러 프로토콜을 채용하는 것 만으로 쉽게 구현할 수 있다. 보통은 열거형으로 선언..