개발/Swift
-
UIKit SwiftUI에서 자동 스크롤개발/Swift 2025. 4. 8. 15:24
UIKit 자동 스크롤자동(동적) 스크롤 하기 위해 uikit 에서도 scrollRectToVisible 제공해줌 layoutIfNeeded() // Init 직후에 아직 내부 레이아웃이 안잡혀서 호출 필요 scrollRectToVisible(button.frame, animated: true) // ScrollView 기능근데 이게 스유 처럼 가운데로 보내주는게 아니라그냥 보이게만 해준다.스크롤 하려는 저 button 이 화면에 아예 안보이면 잘 동작하는데만약 왼쪽 찔끔 나온 상태라면 움직이지 않는 문제가 있음따라서 별도로 스크롤을 계산하여 setContentOffset 호출이 필요함layoutIfNeeded()let buttonCenterX = button.center.x DispatchQueu..
-
WKWebview 에서 post 요청하는방법개발/Swift 2025. 4. 8. 09:46
WKwebview를 사용하여 웹뷰를 로드할떄 load 함수를 사용함 webView.load(request)이떄 들어가는 request는 URLRequest 타입이며url 만 있으면 쉽게 만들수 있다.let request = URLRequest(url: url, cachePolicy: cachePolicy)일반적인 get 요청은 그런데 post 요청을 수행해야 하는 경우는 어떨까?let request = URLRequest(url: url, cachePolicy: cachePolicy) request.httpMethod = "POST" webView.load(request)httpMethod 만 지정해줘서 쉽게 바꿀수 있다.이외 필요한 헤더 (토큰이나 contentType) 를 지정하고request.set..
-
[SwiftUI] NavigationLink pop push 깜빡이는 문제개발/Swift 2025. 4. 8. 09:31
상황case let .reportAction(action): switch action { case .report(.dismiss): state.report = nil case let .report(.presented(action)): switch action { case let .reportSuccess(contentType, id): state.report = nil return .concatenate( ..
-
SwiftUI 커스텀 팝업 노출 방법 fullScreenCover개발/Swift 2025. 3. 25. 17:15
커스텀 팝업을 구현하여 부모뷰 위에 띄우려한다부모뷰를 덮는 형태이지만 반투명한 UI 이다.커스텀 팝업 view 구조ZStack { Color.black.opacity(0.5) 팝업 뷰}팝업을 띄우는 방법 (부모 뷰 에서)fullScreenCover + UIViewRepresentstruct ClearBackgroundRepresentable: UIViewRepresentable { func makeUIView(context: Context) -> UIView { return InnerView() } func updateUIView(_ uiView: UIView, context: Context) { } private class InnerView: UIV..
-
TCA binding 액션 내부 타입 바인딩 @CasePathable개발/Swift 2025. 3. 25. 17:07
Binding보통 아래와같은 방식으로 바인딩을 만들어 노출 비노출 처리함→ Binding init 보다 더 짧고 간결하게 구현히 가능$store.presentActionSheet.sending(\\.presentActionSheet),근데 만약 Action 타입이 내부 세부 타입으로 나누어져있을 경우에 문제가 생김enum Action { enum CommunityPostReportAction { case setActiveAlert(CustomAlertPopupType?) case showReportedPostGuide(Bool) } case report(CommunityPostReportAction)}이런경우 위와 같은 방식으로 바인딩 할수가 없음$store.showReportedP..
-
[Swift] 페이지처럼 넘어가는 스크롤 레이아웃 (Carousel Effect)개발/Swift 2025. 2. 26. 17:40
1. 레이아웃 잡기 제약조건을 다음과 같이 잡음scrollView.snp.makeConstraints { make in make.edges.equalToSuperview() } stackView.snp.makeConstraints { make in make.edges.equalToSuperview() make.height.equalToSuperview() } 가로 스크롤의 경우 Scrollview의 높이값이 지정 되어있어야 함,그렇지 않으면 가로스크롤 뿐만 아니라 세로스크롤 까지 동작 해버림그런데 고정된 높이값을 지정해 줄수가 없고stackview 내부 이미지의 사이즈에 따라 동적으로 계산..
-
[Swift] 애니메이션 동작시 터치 이벤트가 동작 안하는 이유개발/Swift 2025. 2. 26. 15:19
ㅌㅓ치가 안먹음1.애니메이션 다 적용해 놓으니 갑자기 잘먹던 터치 이벤트가 안들어옴ContainerView → StackView → Items구조로 되어있으며Items 를 세팅할떄 addView, contraints 를 잡아줬었음optionContainerView.addSubview(verticalOptionStackView)verticalOptionStackView.snp.makeConstraints { make in make.top.bottom.equalToSuperview() make.leading.trailing.equalToSuperview().inset(40) } private func setMultipleQuizUI(options..
-
SwiftUI + TCA 활용 액션 시트 구현 confirmationDialog개발/Swift 2025. 2. 7. 09:11
액션 시트 구현방법confirmationDialog 활용한다 .confirmationDialog(, isPresented: #>, titleVisibility: , actions: A#>)이옵션을 사용해보자첫번쨰 - 가장 먼저 타이틀 영역 (Stirng) isPresented - 보여줄지 말지 Bool의 바인딩 값 (TCA 상태, 액션과 연결하면됨)titleVisibility - 타이틀 영역 보여줄지action - 여기서 버튼들을 생성해줌isPresented 이거랑 action 만 잘 지정하면 될거같다나머지는 알아서 세팅 일단 비교적 간단한 버튼구현 하여 버튼이 클릭되면액션시트가 뜨는 방식으로 구현하려 한다. 만약 store에 리스트를 가지고 있고 그것을 활용한다면ForEach를 사용해야 할것이다 그러..