728x90

분류 전체보기 298

UIListContentConfiguration, UIBackgroundConfiguration, UICellConfigurationState

안녕하세요. 우연히 봤는데, UITableViewCell에서 textLabel, detailTextLabel, imageView가 deprecated 되었더라구요? 들어가서 보니, contentConfiguration이라는 것을 사용하라고 합니다. (WWDC20) Modern cell configuration을 보면서 뭔지 공부해볼게요. ## UIListContentConfiguration iOS 13 이하에서는 아래처럼 cell의 built-in imageView, textLabel 사용했어요. class ViewController: UIViewController, UITableViewDataSource { @IBOutlet weak var tableView: UITableView! let data =..

UIKit 2022.07.25

viewDidLayoutSubviews

안녕하세요. 다들 알고 계셨겠지만... 저는 이번에 삽질하면서 처음 알게 된 viewDidLayoutSubviews에 대해서 간단하게 알아보려고 해요. 우선.. 제가 삽질하게 된 상황 설명하면서 글을 이어나갈게요. (나중에 똑같은 삽질은 하지 말쟈..) 저는 화면에 UIImageView를 원형으로 출력시키고 싶었어요. 그래서 스토리보드에 UIImageView를 넣고 AutoLayout을 걸어줬어요. 화면 정중앙 UIImageView의 width : height = 1 : 1 (정사각형 모양) UIImageView의 width는 현재 ViewController width의 1/2 그다음 UIImageView를 원형으로 만들기 위해서, ViewController에서 아래처럼 cornerRadius를 설정해줬..

UIKit 2022.07.24

QK65 화이트 골드 에디션 팜레스트

예전에 기성품 팜레스트를 이용해서 가죽 팜레스트를 직접 만들어봤는데요. (혹시 제작기가 궁금하신 분들은 아래 글을 봐주세요.) 천연가죽 팜레스트 제작기 천연가죽 팜레스트 제작기 안녕하세요. 요즘 뭔가 만드는거에 재미들린 것 같아요. 이번에는 가죽 팜레스트를 직접 만들어봤는데, 그 제작과정에 대해서 공유드리려고 합니다. 원래는 기성품인 레이저 팜레스트를 사용 phillip5094.tistory.com 어쩌다 보니 QK65 화이트 골드를 구매하게 되었고.. QK65는 회사에서 쓸거라 회사용 팜레스트를 하나 더 만들어야 하는 상황이 왔습니다. 어차피 만들거.... 만드는 김에 이번에는 저만의 QK65 에디션으로 만들어봤어요. 만드는 방법은 이전 제작기와 완전 동일한데, 다만 이번에는 팜레스트 하우징을 도색해봤..

취미 2022.07.17

대한민국에서 제3자 결제 방식을 사용하여 앱 배포하기

안녕하세요. 최근 우리나라에서 인앱 결제 강제 금지 관련해서 전기통신사업법 시행령이 개정되었죠. 그래서 최근에 애플은 제 3자 결제 방식을 적용하는 방법과 앱 제출 방법과 수수료에 대한 내용을 정리해줬더라구요. 간단하게 정리만 해볼게요. 더 구체적인 내용은 애플 공식 가이드를 보시면 더 자세하게 알 수 있습니다. https://developer.apple.com/kr/support/storekit-external-entitlement-kr/ 대한민국에서 제3자 결제 방식을 사용하여 앱 배포하기 - 지원 - Apple Developer 한국어 제목: 이 앱은 App Store의 안전한 비공개 지불 시스템을 지원하지 않습니다. 본문: 이 앱의 모든 구입 관련 사항은 “” 앱 개발자가 관리합니다. 더 이상 A..

News 2022.07.17

[Swift 5.7] if let shorthand

안녕하세요. Swift 5.7에 새롭게 추가된 if let shorthand 라는 구문에 대해 간단하게 알아볼게요. 저희는 그동안 변수를 unwrapped 시키기 위해서 아래처럼 if let 구문을 사용했습니다. let foo: String? = "String" if let foo = foo { // foo는 String 타입 } 제가 Swift를 처음 공부할 때 if-let 구문을 보고 변수를 중복 선언한 것 같아서 이상하게 느꼈던 기억이 있네요. 아래 코드도 한번 볼까요?? let someLengthyVariableName: String? = "longlonglonglong" let anotherImportantVariable: String? = "anotherlonglonglong" if let s..

Swift 2022.07.05

Xcode 14 Release Notes

안녕하세요. 이번에는 Xcode 14 release note를 읽어보는 시간을 가져볼게요. (beta 버전의 release note이고, 제가 관심 있는 내용 위주로 볼거라... 모든 내용이 없을 수 있는 점 참고 부탁드립니다ㅠㅠ) ## 1. Bitcode Deprecated Bitcode가 deprecated 되었습니다... 프로젝트를 생성하면 기본값으로 disable 상태라고 합니다. Bitcode를 포함된 IPA는 App Store에 제출하면 자동으로 Bitcode가 제거된다고 해요. ## 2. armv7, armv7s, i386 architecture 지원 안함. SDK를 개발하는 저로서는.... 매우 기쁜 소식이네요.....ㅎㅎ..... iPhone 5 이하 그리고 옛날 simulator에 들..

Xcode 2022.07.03

텍스트 길이에 맞춰서 자식뷰의 width를 통일시키는 방법

안녕하세요. 이런 뷰가 있다고 했을 때, 아래처럼 텍스트 길이의 맞춰서 너비를 통일시켜주고 싶을 때가 간혹 있습니다. SwiftUI에서 이렇게 만드는 방법에 대해서 알아볼게요. VStack을 활용해서 아래처럼 뷰를 만들었다고 해볼게요. 자식뷰의 너비가 모두 제각각이죠?? 아래처럼 Text 뷰에 고정 너비를 줘서 모든 너비를 통일시켜줄 수는 있지만, 이런 경우 텍스트가 길어지거나 짧아지는 경우 텍스트에 딱 맞은 너비로 설정이 되지 않는 문제가 있어요. 텍스트 길이에 동적으로 대응하면서 모든 자식뷰들의 너비를 통일시키는 방법 중 하나는 maxWidth와 fixedSize를 활용하는 것입니다. Text 뷰에 frame(maxWidth: .infinity) 수식어를 사용함으로써, 뷰의 너비를 최대한으로 늘려주..

SwiftUI 2022.06.18

Public Apple Framework들의 최소지원 버전을 볼 수 있는 사이트

안녕하세요. Apple의 Public Framework(ex. Accelerate, ClockKit 등) 들의 정보를 한눈에 볼 수 있는 좋은 사이트를 알게 되어서 공유드립니다. 링크는 아래쪽으로 들어가시면 되구요. https://marcoeidinger.github.io/appleframeworks/ Public Apple Frameworks View all public frameworks from Apple and filter based on platform and availability marcoeidinger.github.io 이렇게 표 형태로 Framework가 지원하는 os 별 최소 지원 버전이 명시되어 있습니다. 또한, 검색도 가능해요! 개발할 때 이쪽 사이트를 잘 활용하면 소소하게 도움이 ..

기타 2022.06.18

View Identity와 transition 관계

안녕하세요. 이번에는 SwiftUI에서 View의 identity와 transition이 어떤 관계에 있으며 어떻게 화면이 렌더링 되는지에 대해 알아볼게요. SwiftUI View의 identity는 2가지가 있어요. structual identity: View 계층에서 type과 위치에 따라 구분되는 암시적인 identity explicit identity: id 수식어를 사용해서 명시적으로 identity 선언 이런 Identity는 transition과 밀접한 관계를 가지고 있습니다. (View의 identity가 바뀔 때, transition이 동작하게 됩니다.) structual identity와 explicit idenity 별로 transition이 어떻게 동작하는지 알아볼게요. ## Str..

SwiftUI 2022.06.17

TimelineView

안녕하세요. 이번에는 TimelineView에 대해 간단하게 알아볼게요. 스케줄에 따라 업데이트가 되는 뷰. 즉, TimelineView는 일정한 주기에 따라서 뷰가 업데이트되는 컨테이너 뷰입니다. 아래처럼 1초마다 뷰가 다시 그려지도록 구현할 수도 있죠. TimelineView의 클로저는 context라는 파라미터가 있는데, context는 업데이트를 트리거하는 스케쥴러에 대한 시간(date)을 가지고 있습니다. 그래서 아래처럼 context.date를 활용할 수도 있어요. context는 cadence라는 프로퍼티도 가지고 있어요. cadence는 TimelineView가 업데이트되는 속도를 나타냅니다. enum 타입으로 아래 같은 3가지 타입을 가지고 있어요. (실시간 업데이트, 약 1초마다 업데이..

SwiftUI 2022.06.17