본문 바로가기

iOS/View Programming9

[UIView] isExclusiveTouch로 중복터치를 막아보자 최근에 일을 하면서 화면에 버튼이 여러 개 있을 때 여러 버튼을 동시 클릭하면 각 버튼이 연결하는 화면들이 중복으로 열리는, 중복 클릭으로 인한 이슈가 나왔습니다. 해당 이슈를 isExclusiveTouch 라는 속성을 사용하여 해결하셨길래 공부해보고자 글을 남깁니다. isExclusiveTouch 공식 문서에는 다음처럼 적혀 있습니다. A Boolean value that indicates whether the receiver handles touch events exclusively.터치 이벤트를 독점적으로 받을지 여부를 조정할 수 있는 속성입니다. 해당 속성은 UIView의 인스턴스 프로퍼티로 저장되어 있으며 해당 프로퍼티의 값을 변경하지 않을 경우 기본값으로 false 로 들어갑니다. isExcl.. 2022. 8. 8.
[UIKit] Storyboard 탈출기 (4편) - AutoLayout을 Programmatically하게 적용하기 (1) 뷰를 구성하다 보니 frame-based layout의 한계를 느끼고 오토레이아웃의 필요성을 깨닫게 되어 이번 글에서는 코드로 Autolayout을 적용하는 기본적인 방법에 대해 알아보도록 하겠습니다. 참고사항: 이번 글은 Autolayout의 작동방식을 알고 스토리보드에서 Autolayout을 통해 UI를 구성할 수 있는 분을 예상 독자로 작성하였습니다. 1. 사용하는 방법 각 뷰를 화면의 하위 뷰로 넣어준 다음 해당 뷰에 대해 다음과 같이 .translatesAutoresizingMaskIntoConstraints = false 처리해줍니다. myView.translatesAutoresizingMaskIntoConstraints = false 그리고 원하는 기준점을 바탕으로 오토레이아웃을 구현하면 됩.. 2021. 11. 19.
[UIKit] Storyboard 탈출기 (3편) - Then 라이브러리를 사용해보자 이번 글에서는 Swift에서 종종 쓰이는 오픈소스 라이브러리 Then 에 대해 간단히 이야기해보려 합니다. 이 시리즈에 Then 관련 내용을 넣을지 고민을 잠깐 했습니다. Then 라이브러리가 없으면 코드로 UI를 못 짜는 것도 아니기 때문에 꼭 알아야 하는 부분은 아닙니다. 그러나 코드로 UI를 짜면 관련된 속성을 계속 쓸 수밖에 없는데 Then 은 이걸 간편하게 쓰도록 도와주기 때문에 이번 시리즈에 포함시켰습니다. Then 라이브러리가 무엇인고? iOS 네임드 개발자이신 전수열님의 아주 유명한 오픈소스 라이브러리입니다. => Then 라이브러리 깃헙 바로가기 문서가 잘 되어있어 읽으면 어떤 점이 유용한지 한 눈에 아실 것이라고 생각합니다. 그래서 간단하게 이야기하자면 NSObject 의 subclas.. 2021. 11. 3.
[UIKit] Storyboard 탈출기 (2편) - 스토리보드 대신 SwiftUI의 프리뷰 사용하기 스토리보드를 없애면서 관리해야 할 부분이 코드로 집중돼 편하기도 하지만 뷰를 제대로 만들었는지 확인하려면 매번 시뮬레이터를 돌려봐야 한다는 점은 불편했습니다. 그래서 이번 글에서는 스토리보드 대신 SwiftUI의 프리뷰를 사용하여 매번 시뮬레이터를 돌리지 않고도 뷰를 미리보기하면서 개발하는 방법을 알아보도록 하겠습니다. 주의사항 SwiftUI를 사용해야 하므로 Deployment target이 iOS 13.0 이상은 되어야 합니다. (작성 시 Xcode 버전: 12.5.1) 1. 사용법 결론부터 간단히 말하자면 ViewController() 라는 뷰컨트롤러의 미리보기를 추가하고 싶다면 다음과 같은 코드를 해당 파일이 제일 밑에 추가해주면 됩니다. #if DEBUG import SwiftUI struct .. 2021. 10. 28.
[UIKit] Storyboard 탈출기 (1편) - Xcode에 스토리보드 없는 세팅하기 이번 글에서는 스토리보드에서 탈출하기 위해 가장 먼저 Xcode에 스토리보드 없는 세팅하는 과정을 알아보겠습니다. (작성버전 : Xcode 12.5.1) 우선 만든 프로젝트에서 타겟을 클릭하면 나오는 Deployment Info에서 Main Interface에 있는 Main 부분을 제거합니다. 그리고 프로젝트를 시작할 때부터 있는 Main.storyboard를 제거해 줍니다. (Move to Trash) 그 다음 Info.plist로 가서 Application Scene Manifest -> Scene Configuration -> Application Session Role -> Item 0 에서 Storyboard Name 키를 삭제합니다. ( 왜 없지? 하고 고민하신다면 테스트의 Info.plist.. 2021. 10. 19.