목록2024/09 (28)
HIT해
카카오톡 처럼 동적으로 변경되는 텍스트 입력창을 만들어야했고같이 프로젝트를 진행하는 동료가 이를 구현하고자 3일동안 텍스트필드에 메달렸다. 밤낮으로 힘들어하는 동료를 돕고자 코드를 천천히 뜯어보았다. UIViewRepresentable 안에서 TextField를 반환하고 updateUIView에서 입력된 텍스트를 기반으로 텍스트 필드의 frame을 변경하도록 만들었다. makeUIView와 updateUIView에서 frame으로 높이조절을 하더라도 SwiftUI 코드에서 해당 TextField를 불러왔을때 조정된 크기가 아닌 고정 크기를 가진채 나왔다. 그 이유는 SwiftUI에서는 UIViewRepresntable 안에서 지정한 크기는 적용되지 않고 SwiftUI 코드에서 frame을 지정해야만 ..
줄바꿈을 하는데 분명 자리가 남는데도 줄바꿈이 되는 상황이 발생했다. UIKit에서는 아래와 같이 fixedSize로 문제를 해결할 수 있다고 한다 .fixedSize(horizontal: false, vertical: true) 하지만 여전히 해결되지 않았고, 어절로 인식하지 않게 하는 과정이 필요했다. extension String { func splitWord() -> String { return self.split(separator: "").joined(separator: "\u{200B}") }} "\u{200B}" - 제로 폭 공백(zero-width space)을 사이사이에 추가해주어서 해결했다.제로 폭 공백은 실제로 보이지 않는 공백 문자라 모든 글자 하나..
https://github.com/pointfreeco/swift-composable-architecture GitHub - pointfreeco/swift-composable-architecture: A library for building applications in a consistent and understandable way,A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind. - pointfreeco/swift-composable-architecturegithub.com TCA 를 활용한 Binding 처리는 두가지가 존재..
Xcode 업데이트를 한 뒤 해당 오류가 발생해서 앱을 자꾸 멈추게했다. 원인은 바로 @MainActor 가 포함된 코드를 메인 스레드에서 호출하지 않아서 발생하는 문제였다. 나의 경우 TCA run 코드가 백그라운드 스레드에서 실행되어서, 해당 코드를 메인 스레드로 전환해주어야했다. 해결 방법DispatchQueue.main.async를 사용해 메인 스레드에서 UI 상태를 변경하도록 수정해준다, let completionAction = SCNAction.run { node in // UI 업데이트는 메인 스레드에서 실행 DispatchQueue.main.async { self.parent.enable = true }} 이렇게 수정하면 self.parent.enable이 메인..
이미지 정중앙을 도려내고 싶다면 이 코드를 사용하는 것을 추천한다. func cropImageToCenterSquare(_ image: UIImage) -> UIImage? { let imageSize = image.size let shortLength = min(imageSize.width, imageSize.height) let origin = CGPoint( x: imageSize.width / 2, y: imageSize.height / 2 ) // 잘라낼 사각형 크기를 정사각형으로 설정 let square = CGRect(origin: origin, size: CGSize(width: shortLength/2, height:..
https://developer.apple.com/documentation/scenekit SceneKit | Apple Developer DocumentationCreate 3D games and add 3D content to apps using high-level scene descriptions, and easily add animations, physics simulation, particle effects, and realistic physically based rendering.developer.apple.com 돌의 3D 모습을 정면에서 딴 사진이 필요했다. 그리고 Render라는 메서드를 이용하면 화면을 캡쳐할 수 있다는 것을 알았다. func captureSceneImage(scene:..
https://developer.apple.com/watchos/planning/#create-an-interface-that-ofers-a-great-experience Planning your watchOS appLearn about the tools, technologies, and best practices for building apps for Apple Watch.developer.apple.com 이전에 기존 프로젝트에 워치 기능을 추가해 개발해보았다. 하지만 지원되지 않는 기능도 많고 실제 애플워치를 인식하지 못해서 디밸롭 해나갈 수 없었다. 지금은 Xcode 고질적인 문제때문애 안된다고 할지라도 조그마한 화면에서 기능들을 구현하는 욕심이 나기에 추후 개발하게 되었을때 익숙해질 수 있게 기..
밤새서 프로젝트 개발을 하고 잠들기전 심심풀이로 애플워치 앱을 개발해보았다. 기존에 진행하던 3D 애완돌 프로젝트를 워치에도 적용할 수 있나 궁금했다. 하지만 SwfitUI의 대부분 기능은 동작하지만 UIKit의 기능을 SwiftUI에 불러와서 사용할 수는 없었다. WatchOS에서는 UIResponsablity를 지원하지 않았다. 나는 기존 프로젝트에 워치앱을 추가해보았다. https://developer.apple.com/watchos/ watchOS - Apple DeveloperLearn about the latest major updates in watchOS that you can use to build great apps for Apple Watch.developer.apple.com 기존 ..