일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬중급강의
- 토플공부수기
- 노드JS
- IOS
- SwiftUI
- nodeJS
- 카카오톡채팅봇
- 인프런파이썬강의
- 파이썬중급
- 인프런오리지널
- IOS프로그래밍
- 유학토플
- swift
- 프로그래머스
- rxswift
- uikit
- 리프2기
- JS
- 스위프트
- 우리를위한프로그래밍
- 인프런파이썬
- 교환학생토플
- 파이썬
- 인프런강의
- 토플
- 인프런
- 자바스크립트
- 파이썬웹크롤링
- 웹크롤링
- Python3
- Today
- Total
목록IOS (8)
먹고 기도하고 코딩하라
라이트/다크 모드 컬러가 다른 다이나믹 컬러를 사용할 때, 다크 모드에서도 뷰를 라이트모드 색상으로 표현하고 싶다면 보통은 뷰컨이나 뷰의 overrideUserIntefaceStyle을 .light로 고정해주면 된다. if #available(iOS 13.0, *) { self.overrideUserInterfaceStyle = .light } 하지만 완전한 해결이 되지는 않는다. 현상 특정 뷰의 borderColor, 그리고 backgroundColor 등을 동적으로 변경할 때, 색상이 다크 모드 색상을 그대로 따라가는 경우가 있다. 이런 경우 rgb 값을 명시적으로 넣어 라이트/다크모드에서의 색상을 모두 라이트로 통일하는 것을 한 가지 방법으로 사용할 수 있다. 하지만 추후에 다크 모드 지원을 염두에..
기본적으로 뷰에 GradientLayer를 깔려면 다음과 같이 해야 한다. CAGradientLayer를 생성하고, frame은 그라데이션을 깔 뷰와 동일하게 맞춰준다. (origin, width, height를 동일하게) 그라데이션할 컬러를 2가지 이상 .colors에 [CGColor] 형태로 담는다. startPoint와 endPoint를 지정하되, x, y의 최소값은 0.0, 최대값이 1.0임을 알고 그 안에서 조절한다. 여기서는 가로 방향 그라데이션을 만들어볼 것이다. 레이어에 대한 설정이 끝났으므로, 뷰의 layer.insertSublayer로 레이어를 삽입한다. 코드는 다음과 같다. 스토리보드로 gradientView를 만들었고, constraint는 다음과 같다. center width : ..
요즘 iOS 앱들은 최저 배포 버전이 낮아봐야 13, 14 정도다. 당연히 SceneDelegate가 있는 프로젝트들이고, 토이 프로젝트 만들 때도 13 미만을 고려하는 경우는 거의 없다. 그래서 AppDelegate만 있는 앱에서 SceneDelegate를 새로 도입해야 할 때 뭘 고려해야 하는지, 같은 생각 자체를 해본 적이 없다. 하지만.. 회사 서비스는 iOS 11부터 지원하고 있었고, 지금까지는 AppDelegate만 사용하고 있었다. 올해 1월에 카플레이를 도입하면서 SceneDelegate를 사용할 일이 있어 이 문제를 고민하게 됐다. 애플 공식 문서를 박박 긁어 AppDelegate, SceneDelegate와 함께 끝까지 가보기로 했다. (?) iOS 13부터는 왜 AppDelegate가..
회사 와서 딥링크가 뭔지 첨 알았다. 모르는 게 많고 내가 업무를 통해 배워갈 게 많다는 게 좋긴 한데 잘 이해 못해서 버벅일까봐 그게 좀 걱정.. 아무튼, 코드 분석하면서 deeplink 어쩌구 되어 있는 건 보긴 봤는데 정확히 뭔지는 모르겠지만 당장의 분석에 크게 필요하지 않은 거라서 넘겼는데 공부하면 좋을 것 같다고 하셔서 주말 걸쳐서 공부했다. 우선 딥링크는 하이퍼 링크의 모바일판과도 같다. 특정 주소나 값을 입력하면 앱이 실행되거나, 앱의 특정 화면으로 이동한다. 음.. 예를 들면, 핸드폰하다가 쿠팡 물건 광고가 뜨는 경우를 생각해볼 수 있겠다. 쿠팡 앱이 설치되어 있을 때 광고를 누르면, 바로 쿠팡 앱이 켜지면서 그 상품으로 넘어가는 이런 게 딥링크의 일종이라고 할 수 있을 것 같다. 서버에서..
네줄요약 : 테이블뷰는 단일 컬럼만 가능하다는 제약 사실을 기억하고 결정하자. 둘 사이의 가장 큰 차이점은 레이아웃이다. 테이블뷰를 사용해도 될 요구사항에는 굳이 컬렉션뷰를 사용하지 말고 테이블뷰를 쓰는 게 좋다. 이유는, 컬렉션뷰는 보일러플레이트 코드 때문에 코드 양이 늘어나기 때문이다. 일단 TableView와 CollectionView 간 공통점과 차이점을 간단히 정리하면 이 정도 쓸 수 있다. TableView CollectionView 공통점 * 셀을 기반으로 여러 데이터를 표현할 수 있다. (테이블뷰는 UITableViewCell, 컬렉션뷰는 UICollectionViewCell) * UIScrollView의 서브 클래스이다. * dataSource, delegate 구현이 필요하다. (del..
요약 UIFont에 커스텀 메소드를 추가해주면 됩니다. 빨간 글씨 나올 때까지 쭉 내려보세요. 본문 애플 Human Interface Guidelines의 Typography 항목을 보면 Dynamic Type에 대한 내용이 있다. Dynamic Type은 Best practices 첫 번째에 등장할 정도로 중요한 내용이다. Strive to maintain a minimum font size that most people can read easily. 여기서 강조하는 것은, 최소 폰트 크기는 대부분의 사람이 쉽게 읽을 수 있을 정도를 유지하라는 것이다. Dynamic type의 정의 자체는 iOS, iPadOS, tvOS, watchOS에서 스크린에 나타나는 텍스트 크기를 설정하게 하는 기능인데, 이걸..
스크롤뷰의 Content Layout Guide, Frame Layout Guide 등에 대해서는 설명하지 않고 어떻게 만드는지만 살펴봅니다. 코드, 스토리보드 2가지 방식과 세로/가로 방향 스크롤뷰를 만드는 방법을 모두 다룹니다. 이 글을 참고했으며 좀 더 자세하게 작성했습니다. 0. 스크롤뷰의 이해 스크롤뷰는 실제로 스크롤돼서 보일 뷰들을 담는 Content Layout과 스크린에 보이는 만큼의 Frame Layout을 가집니다. (Content Layout 영역 >= Frame Layout 영역) 이걸 확실히 이해를 해야 Frame Layout에 priority 왜 낮추는지도 이해가 됩니다. 1. 코드 일단 스토리보드를 삭제하고 구현한다고 가정하고 ViewController 소스 코드만 적습니다. ..
어떤 문서를 보다가 pushViewController와 show 방법을 이야기하면서 필자는 show를 더 선호한다고 쓰인 문장을 봤다. 궁금해졌다. pushViewController와 show 방식 모두 내비게이션 컨트롤러 기반으로 움직이는 게 아닌가? 좀 더 자세히 살펴봐야겠다는 생각이 들어 문서를 찾아보고, 실험도 함께 곁들이려 한다. 문서 일단 pushViewController부터 본다. pushViewController(_:animated:) 뷰 컨트롤러를 수신자(receiver)의 스택에 푸시하고 디스플레이를 업데이트한다. func pushViewController( _ viewController: UIViewController, animated: Bool ) viewController : 스택..