UIKIT (149) 썸네일형 리스트형 ViewModel을 사용하는 목적 https://explorer89.tistory.com/294 ViewModelhttps://explorer89.tistory.com/82 ObservableObject와 @Published개체가 변경되기 전에 내보내는 게시자가 있는 개체 형식이다.? @Published와 ObservableObject는 스위프트의 Combine 프레임워크에서 사용되는 속성 래explorer89.tistory.com 왜 ViewModel을 사용하는가?ViewModel의 주요 목적은 UI와 비즈니스 로직을 분리하는 것입니다. 이 패턴은 MVVM(Model-View-ViewModel) 구조에서 사용되며, 다음과 같은 이유로 선택됩니다:UI와 로직 분리ViewController(UIKit)나 View(SwiftUI)에 로직이.. UITabBarAppearance class MainTabBarViewController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .systemIndigo ... let appearance = UITabBarAppearance() appearance.configureWithDefaultBackground() // Set the tab bar background to transparent appearance.backgroundColor = .clear // Optionally, you can add a blu.. UICollectionReusableView와 UIView의 차이 + headerSection UICollectionReusableView와 UIView의 차이UICollectionReusableViewUICollectionView에서 재사용이 가능한 뷰를 위한 클래스입니다.주로 섹션 헤더, 섹션 푸터, 또는 커스텀 장식을 위한 뷰를 만들 때 사용됩니다.재사용 큐(reuse queue)를 활용하여 메모리 효율성을 극대화합니다.UICollectionReusableView는 UICollectionView와 연동하여 동작하도록 설계되어 있습니다.예를 들어, 재사용 식별자(reuseIdentifier)를 통해 등록하고 dequeuing하는 메서드가 제공됩니다. UIViewiOS에서 기본적으로 사용되는 뷰 클래스입니다.재사용 메커니즘이 없으므로, 메모리 관리와 재사용은 개발자가 직접 처리해야 합니다.기본적.. UIFontMetrics tagline.font = UIFontMetrics.default.scaledFont(for: UIFont.systemFont(ofSize: 12, weight: .bold))역할:주어진 UIFont를 기반으로 다이나믹 타입(Dynamic Type) 지원 글꼴을 생성합니다.사용자가 iOS 설정에서 글꼴 크기를 조정(예: "작게", "보통", "크게")했을 때, 자동으로 글꼴 크기를 조정합니다.접근성 및 유연한 UI를 제공하는 데 유용합니다.추가 팁: 다이나믹 타입을 고려한 기본적인 글꼴 설정다이나믹 타입을 완전히 지원하려면, UIFont.preferredFont(forTextStyle:)와 함께 사용하는 것도 좋은 방법입니다.label.font = UIFont.preferredFont(forTextSty.. 키보드 내리기 override func viewDidLoad() { super.viewDidLoad() ... let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) tapGesture.cancelsTouchesInView = false view.addGestureRecognizer(tapGesture) } @objc private func dismissKeyboard() { view.endEditing(true) } 빈 곳을 눌렀을 때 키보드가 내려가게 하려면, UITapGestureRecognizer를 사용.. UICollectionView의 셀 크기를 동적으로 정사각형으로 조정하려면? UICollectionViewDelegateFlowLayout의 sizeForItemAt 메서드를 구현해야 합니다. 또한 UICollectionView의 레이아웃을 적절히 구성하여, 셀의 너비와 높이를 동일하게 설정하도록 보장해야 합니다. 1. ImagePickerCell에서 UICollectionViewDelegateFlowLayout 채택ImagePickerCell 클래스에서 UICollectionViewDelegateFlowLayout를 채택하고, sizeForItemAt을 구현합니다.extension ImagePickerCell: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView.. 탭바뷰컨트롤러에서 액션시트 나오게 하는 방법 탭바의 탭바뷰컨트롤러를 누르면 탭바를 잠까 멈췄다가 액션시트로 처리하는 방법import UIKitclass MainTabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() let homeVC = HomeViewController() let newFeedVC = FeedViewController() let calendarVC = CalendarViewController() homeVC.tabBarItem.image = UIImage(systemName: "square.stack.3d.up".. 델리게이트 패턴으로 사진 선택하기 1. 버튼 클릭 이벤트 연결 (imageSelectedButtonTapped)ImageUploadCell에서 imageSelectedButton의 클릭 이벤트가 델리게이트 패턴으로 연결됩니다. private func imageSelectedButtonTapped() { imageSelectedButton.addTarget(self, action: #selector(didTappedSelectedButton), for: .touchUpInside)}@objc private func didTappedSelectedButton() { print("Button Tapped") d.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 19 다음