PKCS(Public-Key Cryptography Standard, 공개키 암호화 표준)는 공개키 암호화 표준을 위한 메시지 문법을 추상적이고, 해당 알고리즘을 자세히 설명함.이는 디지털서명(Digital Signature) 등에서 사용되며 RFC 문서에 자세히 설명되어 있으며,이 정리글에는 PKCS #1, #2, ..., #15에 대한 개요만 정리.이는 후속글의 ASN.1과 Certificate를 정리하고,Apple에서 공개한 swift-asn1과 swift-certificate 라이브러리를 정리하기 위함. PKCS내용참고#1RSA의 공개키와 비밀키(ASN.1으로 인코딩됨)에 대해 수학적 성질과 규격을 정의. RSA 암호화, 복호화, 서명 검증을 구현하는데에 필요한 알고리즘과 인코딩, 패딩 등의 규격..
SwiftUI에서는 .sheet 를 iOS13부터 지원하고 있지만,sheet의 크기 조절을 하여 BottomSheet처럼 사용하기 위한 presentationDetents는 iOS16부터 지원됨. iOS16 미만 버전을 타겟으로 하는 BottomSheet의 필요성이 있음. 구현 요구사항- content에 viewModifier를 통해 bottomSheet를 붙일 수 있고,- bottomSheet는 상단의 핸들을 가지고 있고, 하단에 sheetContent를 주입받을 수 있어야 함.- bottomSheet는 sheetContent의 높이+핸들의 높이 만큼 높이를 가지되, bottomSheetTopOffset을 받아서 화면높이-bottomSheetTopOffset를 최대 높이로 가짐.- bottomSheet..
이전 글에서도 그렇고,뷰의 사이즈를 알고 싶을 때 GeometryReader를 사용하는데, GeometryReader 내부에 뷰를 그리고 싶지는 않을 때아래와 같은 방식으로 background에 GeometryReader를 넣어 구현함. struct FramePractice: View { @State var size: CGSize = .zero var body: some View { Text("Size: \(size.debugDescription)") .padding() .background(Color.orange) .background( // padding된 Text 뷰의 크기를 알기 위한 방법 ..
SwiftUI의 DisclosureGroup과 OutlineGroup은 iOS14.0부터 사용할 수 있는 뷰. DisclosureGroup과 OutlineGroup은 각각 아래와 같이 생김.둘다 계층이 있는 리스트 형식을 지원.똑같이 생겼..지만 구현 및 동작에서 약간의 차이가 있음. DisclosureGroupDisclosureGroup은isExpanded라는 Binding을 받아서, 동적으로 그룹을 열거나 닫도록 컨트롤할 수 있음.그리고 자식뷰로 DisclosureGroup을 또 넣어서 계층을 더 표현할 수 있음.struct DisclosureGroupPractice: View { let data = ["Hello", "World"] let subData = ["Enjoy", "Develo..
SwiftUI의 View의 .frame viewModifier에 대해 정리. 이전 글(https://swifty-cody.tistory.com/157)에서 정리했듯이,.frame viewModifier는 View의 제약사항이 아닌 또다른 View임을 인식한다는 전제로 설명. .frame(width: height:alignment:)가장 기본적이고 익숙한 frame.해당 View에게 고정사이즈를 제안하기 위함. A라는 View에 frame을 적용했을 때,A의 상위에 해당 frame(width, height)의 View를 적용하고,이 frame View가 A에게 해당 사이즈만큼 차지하도록 제안하는 것이 기본 흐름.그리고 A가 제안된 크기 내에서 실제로 차지할 사이즈를 정해서 frame View에게 알려줌.그..
SwiftUI의 .gesture viewModifier에 대한 정리 .gesture viewModifierSwiftUI에서는 제스쳐를 적용하고 싶은 View에 .gesture를 적용struct GestureTest: View { var body: some View { VStack { Text("GestureTest") } .gesture( // 여기에 GestureMask를 작성 ) }.gesture에 GestureMask를 정의해서 적용.GestureMask에는 DrageGesture, TapGesture, LongPressGesture가 있음.DragGesture드래그 제스쳐 적용 예시.DragGest..
SwiftUI의 lineBreakMode에 대해 생각해 볼 점.SwiftUI의 Text는 기본적으로 lineBreakMode가 byWordWrapping인 것처럼 보임. 하지만 SwiftUI의 lineBreak 규칙을 100% 믿으면 안 될 수도 있음.가끔 byWordWrapping이라고 하기엔 이해되지 않는(?) 줄 바꿈도 보이는데.예를 들어 아래와 같은 코드에서"주변에 유기견을 보호하고"까지 작성하면 한 줄로 표시가 되다가,struct LineBreakTest: View { var body: some View { Text("주변에 유기견을 보호하고") .textStyle(style: .B30, color: .hex000000) .padding(..
(WWDC19 Building Custom Views with SwiftUI를 정리한 글입니다. 스압 주의) 위 화면에는 사실 3가지 View가 존재.View 계층구조 최하단에 Text("Hello, World!") 가 있고,항상 body, Text와 동일한 경계를 갖는 ContentView가 있음.그리고 디바이스의 SafeAreaInset을 제외한 RootView가 존재. 여기에서 body를 갖는 최상위View = ContentView는 항상 '레이아웃 중립'이라고 불리는 레이어.해당 bounds는 body의 bounds에 의해 정의됨. ContentView의 bounds = body의 bounds. 그래서 실제로 우리가 관심을 가져야할 View는 RootView와 body내부의 View(Text)만..
(WWDC24 What's new in Swift 영상을 정리: https://www.youtube.com/watch?v=17fZZ1v_N2U&list=WL&index=10) NonCopyable TypesSwift에서는 값타입, 참조타입 모두 기본적으로 복사가 가능함.Non Copyable Types는 이런 복사 가능성을 제한 시킬 수 있음. 파일의 예시.파일과 같은 고유 시스템 리소스는 자동으로 close하는 deinit을 사용해서 nonCopyable 구조체로 표현할 수 있음.이 표현은 동일한 파일을 여러 곳에서 write하는 런타임 문제를 방지시켜주고,자동으로 정리해주지 않으면 발생할 수 있는 메모리누수 문제도 해결해줌.struct File: ~Copyable { private let fd: C..
이제 Human Interface Guidelines 한글화가 제공되기 시작했습니다.HIG를 편하게 읽을 수 있게 되었네요!🤓 https://developer.apple.com/kr/design/human-interface-guidelines 휴먼 인터페이스 가이드라인(HIG) | Apple Developer DocumentationHIG는 모든 Apple 플랫폼에서 탁월한 경험을 제공할 수 있도록 도움을 주는 지침과 모범 사례를 포함합니다.developer.apple.com
https://developer.apple.com/documentation/swiftui/geometryreader GeometryReader | Apple Developer DocumentationA container view that defines its content as a function of its own size and coordinate space.developer.apple.com GeometryReader의 필요성SwiftUI로 개발을 하다 보면 애플에서 의도한 대로(?) 디바이스의 사이즈, 혹은 부모View의 사이즈를 전혀 생각하지 않고도 대부분 원하는 화면을 그려가게 되지만. 부모View의 사이즈를 알고 해당 좌표계에 따라서 그리고 싶을 수 있음. GeometryReader는 자식V..
basicText는 아래와 같이 modifier들을 사용가능.struct SwiftUIView: View { var body: some View { Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempus sem at congue varius. Nunc vulputate purus eros, vitae venenatis turpis blandit in.") .bold() // 볼드체 .italic() // 이텔릭 .strikethrough(true, color: .blue) // 취소선 .underline(true,..