UIkit [TIL]04.17 SwiftUI 에서 UIView를 추가하기. UIViewRepresentable를 따르는 struct를 만들어서 SwiftUI에서 바로 사용하면 됩니다. 이 struct는 반드시 두 가지 메소드를 구현해야 합니다. func makeUIView(context: Context) -> UIKit에서의 타입 SwiftUI에서 나타낼 뷰를 반환합니다. func updateUIView(_ uiView:... swiftUIkitListswiftuiList UIButton에 Round와 Shadow 동시에 주기 문제 상황 둥근 UIButton에 Shadow를 넣어주고 싶었다! 프로젝트 상에서 이미지 리소스를 최대한 줄이기 위해 이미지는 사용하지 않고 코드로만 작성하고 싶었으나. 생각과는 달리 어려운 부분을 맞이하게 되는데.. 두둥!! 외부에서 버튼에 그림자를 넣어주는 방식이 아닌, UIButton 객체를 만들어 이 객체안에서 그림자, 라운드가 모두 해결되는걸 원했기 때문에 스택오버플로우에 있는 답변... UIkitUIkit loadView( )가 하는 일 컨트롤러가 관리하는 뷰를 만든다. 컨트롤러가 관리하는 뷰?? 이 view는 컨트롤러가 관리하는 뷰 계층구조 내에서 root view를 표현합니다. loadView()는 뷰 컨트롤러의 루트 뷰를 로드하거나 만든 다음, view에 할당해주는 역할을 합니다. 뷰 컨트롤러의 view는 디폴트 값이 nil입니다. 처음 뷰 컨트롤러 인스턴스를 만들었을 때는 루트 뷰가 없는 것이죠. 뷰 컨트롤러는 loa... iOSUIkitswiftUIkit 28.11.21 릴리 TIL : JuiceMaker 돌아보기 JuiceMaker프로젝트에서 JuiceMaekrViewController에서 재고수정을 누르면 StockManagerViewController를 모달로 뛰어주는 것이 사용자 경험을 고려했을 때 자연스럽고, Navigation Controller의 depth를 가지지않아도 된다고 판단했다. 그래서 기존에 StockManagerViewController가 NavigationController에... UIkitUIkit [UiKit] UICollectionViewCompositionalLayout 을 알아보자! 이번에는 UICollectionViewCompositionalLayout에 대해 알아보려고 한다. '아니 UICollectionViewFlowLayout이 있는데 CompositionalLayout이 또 뭐지?' 라고 생각할 수 있다. 대체 이 객체는 무엇이고 FlowLayout과 차이점은 무엇일까? 기존 FlowLayout의 단순하고 일반적인 CollectionView에서 오늘날 많은 앱들... swiftiOSUIkitUIkit Application Structure (UIApplication, AppDelegate) 이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자. Model 개발자가 만든 모델 Event Loop 하드웨어 단에서 발생한 이벤트를 Delegation(위임) 함 Application Delegate App 전체 제어를 담당함 ViewController View ... UIkitUIApplicationAppDelegatebackgroundapp life cycleForegroundAppDelegate ViewController ViewController는 iOS 앱 개발에서 빼놓을 수 없는 요소이다. View management model view 구성 view event 처리 메모리 관리는 AppDelegate에서도 가능 UIViewController.init()인 경우 nil로 넘어옴 init 구현하지 않아도 기본적으로 view가 생성되어 load됨 init method에서 view에 접근하면 위험함 초기화 작... frameboundslife cycleViewController Life CycleUIkitUIViewControllerUIViewController Hit Test, Responder Chain 어떤 식으로 이벤트를 받아야 하는 오소를 감지하는지, 그리고 어떻게 이벤트를 넘기는지에 관한 내용을 이해해야 사용자와의 제대로된 interaction이 있는 앱을 만들 수 있을 것이다. 가장 상위 (View 계층 구조에서 이벤트 발생시, 가장 위에 있는 UI 요소) 요소로 이벤트가 전달되고, 만약 해당 이벤트를 받지 못한다면, 그보다 상위에 있는 UIResponder 객체로 이벤트가 전달되는... UIEventUIResponder응답체인UIControlUITouchUIkithit testresponder chainUIControl [UIKit][AutoLayout] 오토레이아웃 개념 - Priority 1차 방정식으로 각 UI 컴포넌트간 x, y에 대한 Postion 그리고 width와 height를 설정하죠. 그런데, 이 방정식이 충돌하는 경우가 발생합니다. 그런 경우 “우선순위”를 결정해서 문제를 해결할 수 있습니다. 그 개념이 Hugging priority 와 Compression Resistance priority 입니다. Hugging? 끌어안는 것에 대한 우선순위 A라는 친구의 ... UIkitUIkit [iOS][Swift] - 코드로 UI 구현하기 (part.0 - preview, canvas 세팅하기) 오늘은 코드로 UI를 구현하기 전에, canvas를 세팅한 과정을 정리해보겠습니다. 이번 part.0은 코드로 UI를 짜는 과정이 아니라 UI를 편하게 보기 위한 세팅 과정을 담은 글이라는 것을 참고해주세요. (코드를 짜는 과정이 궁금하시다면, 다음 파트부터 읽어주시길 바랍니다.🙃) 또한, 이 글은 공부하면서 작성한 글이기 때문에 잘못된 정보가 있을 수 있습니다.🥺 UIKit으로 코드를 짤건... ViewUIkit코드iOSStoryboardUIVIewContollerRepresentableUIViewRepresentablecanvaspreviewswiftStoryboard
[TIL]04.17 SwiftUI 에서 UIView를 추가하기. UIViewRepresentable를 따르는 struct를 만들어서 SwiftUI에서 바로 사용하면 됩니다. 이 struct는 반드시 두 가지 메소드를 구현해야 합니다. func makeUIView(context: Context) -> UIKit에서의 타입 SwiftUI에서 나타낼 뷰를 반환합니다. func updateUIView(_ uiView:... swiftUIkitListswiftuiList UIButton에 Round와 Shadow 동시에 주기 문제 상황 둥근 UIButton에 Shadow를 넣어주고 싶었다! 프로젝트 상에서 이미지 리소스를 최대한 줄이기 위해 이미지는 사용하지 않고 코드로만 작성하고 싶었으나. 생각과는 달리 어려운 부분을 맞이하게 되는데.. 두둥!! 외부에서 버튼에 그림자를 넣어주는 방식이 아닌, UIButton 객체를 만들어 이 객체안에서 그림자, 라운드가 모두 해결되는걸 원했기 때문에 스택오버플로우에 있는 답변... UIkitUIkit loadView( )가 하는 일 컨트롤러가 관리하는 뷰를 만든다. 컨트롤러가 관리하는 뷰?? 이 view는 컨트롤러가 관리하는 뷰 계층구조 내에서 root view를 표현합니다. loadView()는 뷰 컨트롤러의 루트 뷰를 로드하거나 만든 다음, view에 할당해주는 역할을 합니다. 뷰 컨트롤러의 view는 디폴트 값이 nil입니다. 처음 뷰 컨트롤러 인스턴스를 만들었을 때는 루트 뷰가 없는 것이죠. 뷰 컨트롤러는 loa... iOSUIkitswiftUIkit 28.11.21 릴리 TIL : JuiceMaker 돌아보기 JuiceMaker프로젝트에서 JuiceMaekrViewController에서 재고수정을 누르면 StockManagerViewController를 모달로 뛰어주는 것이 사용자 경험을 고려했을 때 자연스럽고, Navigation Controller의 depth를 가지지않아도 된다고 판단했다. 그래서 기존에 StockManagerViewController가 NavigationController에... UIkitUIkit [UiKit] UICollectionViewCompositionalLayout 을 알아보자! 이번에는 UICollectionViewCompositionalLayout에 대해 알아보려고 한다. '아니 UICollectionViewFlowLayout이 있는데 CompositionalLayout이 또 뭐지?' 라고 생각할 수 있다. 대체 이 객체는 무엇이고 FlowLayout과 차이점은 무엇일까? 기존 FlowLayout의 단순하고 일반적인 CollectionView에서 오늘날 많은 앱들... swiftiOSUIkitUIkit Application Structure (UIApplication, AppDelegate) 이전에 앱의 실행 과정에 대해서 공부했을 때 제대로 이해하지 못했었다. 이번 기회에 제대로 이해하는 자리를 가져보려 한다. 조금 성장했는지 약간 더 이해가 되었다! 그럼 시작하자. Model 개발자가 만든 모델 Event Loop 하드웨어 단에서 발생한 이벤트를 Delegation(위임) 함 Application Delegate App 전체 제어를 담당함 ViewController View ... UIkitUIApplicationAppDelegatebackgroundapp life cycleForegroundAppDelegate ViewController ViewController는 iOS 앱 개발에서 빼놓을 수 없는 요소이다. View management model view 구성 view event 처리 메모리 관리는 AppDelegate에서도 가능 UIViewController.init()인 경우 nil로 넘어옴 init 구현하지 않아도 기본적으로 view가 생성되어 load됨 init method에서 view에 접근하면 위험함 초기화 작... frameboundslife cycleViewController Life CycleUIkitUIViewControllerUIViewController Hit Test, Responder Chain 어떤 식으로 이벤트를 받아야 하는 오소를 감지하는지, 그리고 어떻게 이벤트를 넘기는지에 관한 내용을 이해해야 사용자와의 제대로된 interaction이 있는 앱을 만들 수 있을 것이다. 가장 상위 (View 계층 구조에서 이벤트 발생시, 가장 위에 있는 UI 요소) 요소로 이벤트가 전달되고, 만약 해당 이벤트를 받지 못한다면, 그보다 상위에 있는 UIResponder 객체로 이벤트가 전달되는... UIEventUIResponder응답체인UIControlUITouchUIkithit testresponder chainUIControl [UIKit][AutoLayout] 오토레이아웃 개념 - Priority 1차 방정식으로 각 UI 컴포넌트간 x, y에 대한 Postion 그리고 width와 height를 설정하죠. 그런데, 이 방정식이 충돌하는 경우가 발생합니다. 그런 경우 “우선순위”를 결정해서 문제를 해결할 수 있습니다. 그 개념이 Hugging priority 와 Compression Resistance priority 입니다. Hugging? 끌어안는 것에 대한 우선순위 A라는 친구의 ... UIkitUIkit [iOS][Swift] - 코드로 UI 구현하기 (part.0 - preview, canvas 세팅하기) 오늘은 코드로 UI를 구현하기 전에, canvas를 세팅한 과정을 정리해보겠습니다. 이번 part.0은 코드로 UI를 짜는 과정이 아니라 UI를 편하게 보기 위한 세팅 과정을 담은 글이라는 것을 참고해주세요. (코드를 짜는 과정이 궁금하시다면, 다음 파트부터 읽어주시길 바랍니다.🙃) 또한, 이 글은 공부하면서 작성한 글이기 때문에 잘못된 정보가 있을 수 있습니다.🥺 UIKit으로 코드를 짤건... ViewUIkit코드iOSStoryboardUIVIewContollerRepresentableUIViewRepresentablecanvaspreviewswiftStoryboard