728x90 SMALL Project/PhotoDiary4 🎶 이미지 테두리에 만드는 방법 ✅ 구현 내용이미지 스티커를 보여주는 커스텀 UIView로, 선택되었을 때 파란색 점선 테두리와 삭제 버튼이 나타나도록 한다.이는 UI 디자인 툴이나 사진 편집 앱에서 자주 쓰이는 구성입니다. ✅ 전체 코드class StickerContainerView: UIView { // MARK: - UI Components let imageView: UIImageView private let borderLayer = CAShapeLayer() private let deleteButton = UIButton(type: .custom) // MARK: - Init init(image: UIImage) { self.imageView = UIImageVi.. 2025. 6. 25. ✅ A 이미지 위에 B 이미지를 올리고, 이동 범위를 이미 A 이미지 사이즈내로 하는 방법 @objc func handlePanGesture(_ gesture: UIPanGestureRecognizer) { guard let targetView = gesture.view, let containerView = targetView.superview else { return } switch gesture.state { case .began: initialCenter = targetView.center case .changed: let translation = gesture.translation(in: containerView) var newCenter = CGPoint( x: initialCenter.x .. 2025. 6. 24. 👌 컬렉션뷰내의 셀의 위치를 가운데로 오게 하는 방법 class CenterSnapFlowLayout: UICollectionViewFlowLayout { override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint { guard let collectionView = self.collectionView else { return proposedContentOffset } // ✅ 지금 제안된 위치에서 보여질 셀들의 범위를 계산합니다. 이 범위 내의 셀들 중에 가장 중앙에 가까운 셀을 찾기 위해 사용됩니다. let collectionVi.. 2025. 6. 17. 👍 사용자가 버튼을 눌렀을 때 현재 보여지고 있는 시트(DiarySheetViewController)를 닫고, 그 이후에 PhotoDiaryViewController를 전체화면으로 띄우기 위한 흐름 🔁 최종 정리 흐름도[MainTabBarController] ← 앱의 rootViewController │ ▼[DiarySheetViewController] ← .pageSheet 형식으로 띄워짐 │ ▼ (버튼 눌러서 dismiss됨)[PhotoDiaryViewController] ← NavigationController로 감싸져 전체화면으로 띄워짐 DiarySheetViewController 안에서 특정 버튼을 눌렀을 때 PhotoDiaryViewController를 전체화면으로 띄우면?@objc private func photoDiaryTapped() { dismiss(animated: true) { let photoVC = PhotoDiaryVie.. 2025. 6. 16. 이전 1 다음 728x90 LIST