본문 바로가기
728x90

전체 글142

[iOS] SwiftUI LazyVStack LazyHStack :: lazy load views 안녕하세요! 오늘은 SwiftUI 의 Lazy 키워드를 정리하려고 합니다. 지난번에 VStack, HStack, ZStack 에 대해서 정리를 했었는데, ZStack 을 제외하고는 앞에 Lazy 라는 키워드가 붙은 LazyVStack, LazyHStack 이 있습니다 👀 Lazy 라는 키워드가 붙는 건 어떤 차이가 있는지 궁금해서 찾아봤어요. 👀 LazyVStack LazyHStack :: lazy load views LazyVStack 은 VStack 과 동일하게 vertical (세로) 방향으로 항목들을 보여주는 뷰이지만, 각 항목이 필요할때만 생성합니다. LazyHStack 은 Horizontal (가로) 방향으로, LazyVStack 과 방향만 다르고 동일합니다! Stack 이 lazy 하다는 것.. 2022. 6. 7.
[iOS] SwiftUI property wrapper @State @Binding @State SwiftUI 는 state 로 선언한 프로퍼티의 저장소를 관리한다. 해당 프로퍼티의 값이 변경될 때, SwiftUI 는 값에 의존하고 있는 뷰 계층구조의 부분을 업데이트한다. State 프로퍼티는 하나의 뷰 안에서 사용되는 값으로, 일반적으로 private 키워드를 붙여서 사용한다. State instance 는 값(value)을 읽고 쓸 수 있는 형태이기 때문에, value 와 동일하지는 않다. state 가 갖고있는 value 에 액세스하기 위해서는, property name 을 통해 접근하면 된다. 해당 값은 wrappedValue 속성을 반환한다. wrappedValue 는 state 변수가 저장하고 있는 값을 접근하는 프로퍼티이지만, wrappedValue 를 직접 접근해서는 안된.. 2022. 6. 2.
[iOS/SwiftUI] Text, Image 기본 정리 + 시스템 이미지 ✍️ Text Text 는 한줄 이상의 읽기 전용 글자를 표현하기 위한 View 입니다. Text initializer Text 생성자는 여러가지가 있는데, 이미지로도 생성할 수 있는게 UIKit 과는 다른거 같아요. NSAttributedString 을 사용하면 가능하긴 했지만, 기본적으로 이미지를 텍스트와 연결할 수 있게 제공해주네요. init(String) → 단순 문자열, Localized 관련 생성자도 따로 있어요. init(AttributedString) → NSAttributedString 이랑 다릅니다. (+iOS15) init(Image) → 다른 Text 들이랑 연결하기위한 Image init(_ date: Date, style: Text.DataStyle) Text.DataStyle .. 2022. 5. 5.
[iOS] WKWebView - 앱에서 웹뷰를 띄우자 📱WKWebView Class WKWebView 객체는 앱 내부의 브라우저에서 웹 콘텐츠를 보여줍니다. WKWebView 는 네이티브 뷰에 HTML, CSS, JavaScript 로 표현되는 웹 브라우징을 제공합니다. 앱의 콘텐츠를 빈번하게 변경해야할 경우, 웹앱을 사용하게 될 것이에요. 네이티브 앱보다는 웹앱은 웹 콘텐츠만 배포하면 되니 좀더 유연한 대처가 가능하겠죠. 👋 WKWebView Delegate WKWebView 는 delegate 객체를 통해 유저의 경험과 탐색을 컨트롤할 수 있도록 제공합니다. 여기서 유저의 경험은 UI delegate, 탐색은 navigation delegate 가 담당한다고 이해했어요. 🤔 navigation delegate (WKNavigationDelegate) 를.. 2022. 4. 30.
[iOS/SwiftUI] View, Stack 기본 정리 SwiftUI 는 UIKit 과 비슷하게 iOS 앱의 UI 를 그리기 위한 프레임워크입니다. iOS13 부터 사용가능하지만 iOS14 이상부터 가능한 기능들이 많아, 미니멈 iOS14 에서 주로 사용하는 걸로 알고 있습니다! 다음 사이드프로젝트나 클론코딩은 SwiftUI 로 꼭 해봐야겠어요!! 그러기 위한 스터디 시작~! 💪 SwiftUI 에 대한 특징 - 선언적 구문을 사용해 사용자 인터페이스의 기능을 명시하기만 하면 됩니다. - 드래그 앤 드롭으로 UI 를 구성할 수 있고, 미리보기가 가능한 인터페이스가 있습니다. (과연 자주쓸지 의문이지만요) - 사용자 인터페이스의 속성은 메소드 체이닝(Method Chaining) 문법을 이용해 설정합니다. View 프로토콜의 Instance method 를 보면.. 2022. 4. 29.
[iOS/Swift] TextView - URL (하이퍼링크)클릭해 웹뷰 띄워주기 안녕하세요. UITextView 에 하이퍼링크로 URL 을 나타내기 위해 방법을 찾아본 내용을 정리하러 왔습니다! 처음에는 UILabel 에서 적용하려고 했는데 방법이 복잡해서 UITextView 로 바꿨습니다. - UILabel 을 사용하려면 해당 링크를 참고하면 좋을 것 같아요. 📝 목차 1. TextView 의 dataDetectorTypes 속성 설정하기 2. UITextViewDelegate 를 통해 WKWebView 띄워주기 이 두가지 과정을 통해 TextView 의 텍스트 중 Http links 를 클릭해 웹뷰를 띄워줄 수 있습니다. 1. TextView 의 dataDetectorTypes 속성 설정하기 UITextView 에는 dataDetectorTypes 속성이 있어, phone num.. 2022. 1. 25.
[클린 아키텍처] 3장 패러다임 개요 & 4장 구조적 프로그래밍 3~6장은 프로그래밍 패러다임을 다룬다. 2부 _ 프로그래밍 패러다임 소프트웨어 아키텍처는 코드로부터 시작한다. 따라서, 코드가 처음 작성된 시점의 프로그래밍부터 설명한다. 👀 프로그래밍의 역사... 다시보기 1938년, 바이너리 언어를 사용하던 시기에도 반복문, 분기문, 할당문, 서브루틴, 스택 등의 구조를 이용했다. 1940년 후반, 어셈블러(assembler)의 등장으로 바이너리 언어를 사용하지 않음이 가능해졌다. 1951년, 그레이스 호퍼는 컴파일러(complier)라는 용어를 만들고, 최초의 컴파일러인 A0 를 발명했다. 이후 Fortran, COBOL, PL/1, SNOBOL, C, Pascal, C++, Java 등 언어가 우루루 나왔다. 이후, 프로그래밍 패러다임에도 혁신적인 변화가 일어났.. 2022. 1. 18.
[클린 아키텍처] 1장 설계와 아키텍처란? & 2장 두 가지 가치에 대한 이야기 1장 _ 설계와 아키텍처란? 설계(design) 와 아키텍처(architecture) 사이에 차이가 있을까? 결론부터, 전체 설계의 구성요소로 보면 설계와 아키텍처 모두 필요하기때문에 구분지을 필요가 없다. 아키텍처는 고수준의 구조, 설계는 저수준의 세부사항이라고 정의되어 있지만.. 실제로 집을 지을때나 소프트웨어를 설계할때 아키텍처와 설계는 개별적으로 존재할 수 없기 때문이다. 좋은 소프트웨어 설계의 목표는? 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화 하는 것이 목표이다. 새로운 기능을 출시할 때마다 비용이 증가한다면 나쁜 설계이다. 엉망진창이 되어 가는 신호 특정 사례를 통해 직원이 많아지지만, 코드 생산성은 그대로라면 각자의 생산성은 떨어지는 것을 보여준다. 시스템을 급하게 만들.. 2022. 1. 11.
iOS 앱 개발 부트캠프 정리 🌱 iOS 앱 개발을 처음 공부를 시작하는 분들에게 도움이 될 것 같아 정리해봤습니다! 부트 캠프가 정답은 아니지만 커리큘럼을 살펴보는 것 만으로도 도움이 된다고 생각합니다 ☺️ 네이버 Boostcourse 챌린지 1개월 - CS / 멤버쉽 4개월 - 프로젝트 개발 무료로 진행되지만 퀄리티있는 네이버 부스트코스, 그만큼 지원자가 많아서 서류 & 1, 2차 코테로 선발합니다 🥺 2021년 기준 모집기간 5.13 ~ 6.21 부스트캠프 개발자의 지속 가능한 성장을 위한 학습 커뮤니티 boostcamp.connect.or.kr 야곰 아카데미 iOS 커리어 스타터 캠프 - 6개월과정 커리큘럼 탄탄해보이고, 현직자 분들께 코드리뷰를 받을 수 있어서 좋아보이는 캠프 5기 기준 모집기간 21.12.20 - 22.01.0.. 2022. 1. 4.
728x90