일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ios
- createml
- cloud functions
- Swift
- app intents
- Project
- UIStackView
- github
- Flutter
- UIDatePicker
- UITableView
- Delegate Pattern
- fcm
- Firebase
- Complication
- SwiftUI
- coreml
- Coding Test
- backend
- Tuist
- Apple Developer Academy
- spring
- task.yield()
- widgetkit
- 코테
- swift concurrency
- watchkit
- Sendbird
- tabman
- WWDC22
- Today
- Total
목록ios (57)
azhy의 iOS 이야기
2022년 7월 7일에 작성됨scrollToRow(at:at:animated:)사실 방법은 정말 간단합니다. 바로 scrllToRow를 사용하면 되는 데 사용법은 다음과 같습니다. // 날짜 안지난 스토리로 스크롤 이동 let startIndex = IndexPath(row: StoryDay().storyArray.firstIndex(of: StoryDay().storyArray.filter { $0 > Int(CoupleTabViewModel.publicBeginCoupleDay)! }.min()!)!, section: 0)self.tableView.scrollToRow(at: startIndex, at: .top, animated: false) 사실 코드는 별거 없습니다. 자신이 원하는 위치의 In..
2022년 7월 5일에 작성됨 개인 프로젝트를 하고 있는데 tableView를 사용하는 도중 내가 예상한 결과와 다른 화면이 나오는 문제가 생겼습니다. 원래 결과는 30일까지만 text가 회색이고 나머지 뒤에 text는 검은색이어야 정상적은 결과지만 보시다시피 중간에 뜬금없이 200일, 300일, 1주년, 400일 text가 회색으로 표시되고 있었습니다. 그래서 cell에 들어가는 data가 문제인가 싶어서 print를 찍어봤지만 데이터에는 문제가 없었어요.. 무엇이 문제인지 찾다가 결국 알아내서 한번 정리해보려 합니다.dequeueReusableCelltableView를 사용한 경험이 있으면 어디선가 봤을 법한 코드입니다. 애플 공식 문서에 따르면 "성능상의 이유로 테이블 보기의 데이터 원본은 일반적으..
2022년 6월 29일에 작성됨Button에 click action 달기 private lazy var setBtn: UIButton = { let btn = UIButton() btn.addTarget(self, action: #selector(setBtnTap), for: .touchUpInside) return btn }() @objc func setBtnTap() { print("setBtnTap") } 우선 click 했을 때 실행하는 함수를 만들어줘야 합니다. 간단히 setBtnTap이라는 함수를 만들었고 UIButton View를 하나 만들었습니다. 그 버튼에 addTarget이라는 메서드를 사용하여 앞에서 만든 s..
2022년 6월 29일에 작성됨 delegate pattern 은 정말 자주 쓰이기 때문에 정말 중요합니다.delegate 가 무엇일까? 사전적 정의는 위임하다. 즉 어떤 작업을 다른 사람에게 위임해서 요청한다 라는 느낌으로 이해하면 됩니다. delegate pattern을 쓰기 위해서는 송신자와 수신자가 필요한데 쉽게 생각하면 데이터를 주고받는 ViewController 2개가 필요하다고 생각합시다. delegate 패턴은 보통 되돌아오는 과정 (B -> A) 경우에 사용하고 반대인 A -> B의 경우에는 프로퍼티 접근으로 쉽게 데이터를 전달할 수 있습니다. 프로퍼티 접근에 관해서는 맨 밑에서 간단히 설명해 볼게요.프로토콜 선언protocol TapDelegate: AnyObject { func ..
2022년 6월 24일에 작성됨 어느 날 원티드 프리온보딩 코스의 사전과제 내용을 보게 됐는데, 아쉽게도 제출 날짜가 애매해서 시간을 맞추기는 힘들 거 같았지만 그 내용이 재밌을 거 같았고 연습하기도 좋을 거 같아서 한번 만들어 보았습니다.사전과제 사전과제는 다음과 같았습니다.OpenWeather API 를 이용하여 두 개의 화면을 만들어야 했는데, 첫 번째 화면은 주어진 도시의 정보를 보여주고 두 번째 화면은 첫 번째 화면에서 도시를 클릭했을 때 그 도시의 자세한 정보를 보여주는 화면입니다. 우선 제약사항을 보고 '쉽지 않겠다' 라고 직감했다.. 외부 라이브러리를 일체 사용할 수 없었기에 Alamofire, Kingfisher, Snapkit 등 아무것도 쓸 수 없었습니다.. 하지만 라이브러리에 의존..
2022년 6월 22일에 작성됨 원하는 Font 검색해서 다운하기저는 눈누 라는 페이지를 자주 사용합니다. 원하는 폰트를 다운해 주세요! TTF vs OTF폰트에는 TTF와 OTF 두 개의 파일이 있습니다. TTF는 포맷방식이 TrueType Font이고 문서 작업이나 디자인 작업에 적합한 대신 용량이 크고 OTF는 포맷방식이 OpenType Font 이고 고해상도 출력 작업에 용이하고 용량이 적습니다. 말고도 많은 차이점이 있지만 사실 TTF나 OTF는 작업 장식, 속도, 파일 크기 등 모든 것이 상대적이기 때문에 일반적인 작업을 하는 경우에는 큰 차이가 없다고 합니다. 차이가 나더라도 엄청 미세한 차이라고 하네요. 고해상도 대형 출력 작업 (300 dpi 이상)을 한다면 OTF를 권장하고 나머지는 아..
2022년 6월 22일에 작성됨 iOS 개발의 기본이 되는 ViewController, 그래서 우리는 View Contorller를 잘 다루기 위해서 꼭 생명주기를 알고 있어야 합니다. 보통 화면을 구성하면 여러 개의 화면으로 구성하는데 각 뷰들은 뷰컨을 가지고 있고 이 뷰컨들은 각자 생명주기를 가지고 있습니다. 그림으로 표현하면 이러한 생명주기를 가지게 된다. 각자 하나씩 살펴봅시다. loadView뷰를 로드하거나 생성하는 역할을 한다. 공식문서에서는 재정의하거나 직접 호출하지 말라고 적혀있으니 우리는 사용할 일이 없다. viewDidLoadviewDidLoad는 뷰 컨트롤러가 뷰 계층 구조를 메모리에 로드한 후에 (뷰 로딩완료) 호출되며 시스템에 의해 자동으로 호출됩니다.화면이 만들어질 때 단 한 번..
2022년 6월 18일에 작성됨 API Key를 숨기지 않고 깃허브에 그대로 올리면 다른 사람들도 API key를 볼 수 있어서 되돌릴 수 없는 일들이 벌어질 수도 있습니다. AWS 해킹당한 경험담 실제로 GitHub에 Key를 숨기지 않고 올려서 150만 원 정도 청구된 사례도 있죠. 지금 OpenWeatherMap API 를 이용해서 간단한 작업을 하고 있는데, 이 API를 사용하려면 API Key 가 필요했고 Key를 숨기는 작업이 필요해서 정리해보려 합니다.API Key 숨기기1. New File -> Property List 2. 생성된 파일에 String Type을 가진 key를 하나 만드시고 Value에 실제 Key 값이 아닌 임시로 아무 string 값을 넣어줍니다. 사실 2번에서 실제 ..
2022년 6월 17일에 작성됨 StackView는 UI를 그릴 때 상당히 많이 이용하는 것 같습니다. 개인적인 생각이지만 StackView 만 잘 써도 기본 UI 틀은 다 만들 수 있는 것 같네요.. 이 유용한 StackView의 기본에 대해 정리해보려 합니다. StackView의 기본 속성은 axis, distribution, alignment, spacing 4가지가 있다.AxisDistribution (axis 방향)Fill (default) Fill 속성은 현재 기준 방향으로 요소들을 채운다. 만약 너비의 합이 스택 뷰의 너비보다 크거나 작다면 뷰들의 최소, 최대 크기에 대한 우선순위에 따라 크기를 줄이거나 확장시킵니다.compression resistance priority: 최소 크기에 대한..
2022년 6월 5일에 작성됨 UITextField를 쓰다 보니 글자 수를 제한해야 하는 경우가 생겼는데 그 방법을 한번 정리해보려 합니다. UITextField 세팅우선 테스트를 위해 view 가운데에 UITextField 하나를 올려두었습니다.class SettingViewController: UIViewController { let textField: UITextField = { let textField = UITextField() textField.translatesAutoresizingMaskIntoConstraints = false textField.layer.cornerRadius = 4 textField.layer.borderWidth..