프로그래밍/iOS (32) 썸네일형 리스트형 [SwiftUI] 특정 View에서 TabView 가리기 친구 목록에서 프로필 View로 이동 시 하단과 같은 문제가 생겼다. 이는 내가 원하는 결과도 아니고 사용성에서도 매우 좋지 않았다. 구글링을 해보니 TabView { NavigationStack { } } 구조로 되어 있는 코드를 NavigationStack { TabView { } } 이런식으로 바꾸면 해결 된다고 한다. 하지만 TabView - Navigation 구조를 바꾸면 상상치 못할 버그들이 엄청 많이 나올 것이 뻔하기 때문에 다른 방법을 찾아보기로 했다. SSAFY 2기 단톡방에서 답을 찾았다. 3년째 내 헛소리를 잘 받아주시는 고마우신 분들이다. 결론적으로는 toolbar에서 tabBar를 히든처리 해주면 되는 간단한 문제였다. NavigationStack { List { HStack {.. [SwiftUI] View의 사이즈 얻기(Feat. GeometryReader) 프로필 보기 화면을 SwiftUI로 작업하던 도중 View의 사이즈를 어떻게 얻을까 고민을 하였다. self를 통해 가져오려고 해봤지만 Failed... 따라서 검색을 해서 오늘의 주제인 GeometryReader 를 학습했다. GeometryReader란? Apple 공식 홈페이지 문서에 간단히 나와있다. "콘텐츠를 자체 크기 및 좌표 공간의 함수로 정의하는 컨테이너 보기입니다." "이 보기는 상위 레이아웃에 유연한 기본 크기를 반환합니다." 그래요. 이거 쓰면 됩니다. 라고 한마디로 정의해주고 있다. 사용 방법도 매우 간단하다. var body: some View { GeometryReader { geometryValue in VStack { Image(systemName: "person") .res.. [UIKit] TableViewCell에서 AutoLayout 동적으로 추가 및 삭제하기(AutoLayout programmatically Swift) 프로젝트를 하던 도중 TableViewCell에 AutoLayout을 동적으로 추가를 할 일이 생겼다. 하단은 프로필에 상태메세지가 없을 경우 사용자 이름을 centerYAnchor로 주는 코드이다. if(self.dataSource[indexPath.section][indexPath.row].statusMsg == nil) { cell.name.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true } else { cell.name.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true cell.statusMessage.text = self.dataSource[in.. [UIKit] TableView section header 간격 문제 해결 TableView를 만드는 도중 아래의 그림과 같이 Section이 nil인 경우에도 header가 잡히는 경우나 간격이 추가되는 버그가 있다. 우선 nil일 때 Header Section의 크기가 들어가지 않도록 변경해보자. tableView.tableHeaderView = .init(frame: .init(x: 0, y: 0, width: 0, height: CGFloat.leastNonzeroMagnitude)) tableView를 생성할 때 위의 코드를 추가해주면 아래와 같이 section이 없으면 View가 추가되지 않는다. 다음으로 친구라는 섹션 위의 공백을 없애보자. tableView.sectionFooterHeight = 0 우선 Footer를 사용하지 않으므로 FooterHeight를 0.. [SwiftUI] UIViewRepresentable 란 무엇인가? 서론 SecretTalk의 친구목록, 대화목록을 구현하기 위해 UITableView의 기능이 필요하다. 이는 SwiftUI에서는 구현되지 않았기 때문에 SwiftUI에서 UIKit을 사용하기 위한 방법을 찾다가 UIViewRepresentable 이라는 기능을 발견했다. UIViewRepresentable 이란? View를 SwiftUI View 계층 구조에 통합하는데 사용하는 UIKit View 래퍼이다. 구조 protocol UIViewRepresentable : View where Self.Body == NeverProtocol 형식이다. 개요 UIViewRepresentable 인스턴스를 사용하면 SwiftUI 인터페이스에서 UIView 객체를 생성 및 관리할 수 있다. 앱의 커스텀 인스턴스 중 .. File System Programming Guide (2) - File System Basics 파일 시스템은 데이터 파일, 앱 및 운영 체제 자체와 관련된 파일의 영구 저장소를 처리한다. 따라서 파일 시스템은 모든 프로세스에서 사용하는 기본 리소스 중 하나이다. APFS는 macOS, iOS, watchOS 및 tvOS의 기본 파일 시스템이다. APFS는 iOS 10.3 이상 및 macOS High Sierra 이상에 대한 기본 파일 시스템으로 HFS+를 대체한다. macOS는 Supported File Systems 에 설명된대로 다양한 기타 형식을 추가로 지원한다. 기본 형식에 관계없이 장치에 연결된 모든 디스크 (물리적으로 연결되어 있거나 네트워크를 통해 간접적으로 연결됨)는 단일 파일 모음을 만드는 데 공간을 제공한다. 파일 수가 수백만 개일 수 있기 때문에 파일 시스템은 디렉토리를 사용하.. File System Programming Guide (1) - Introduction 파일 시스템은 모든 운영 체제에서 중요한 부분이다. 결국, 이것은 사용자가 자신의 물건을 보관하는 곳이다. 파일 시스템의 구성은 사용자가 파일을 찾는 데 중요한 역할을 한다. 또한 조직은 앱과 시스템 자체가 사용자를 지원하는 데 필요한 리소스를 쉽게 찾고 액세스 할 수 있도록 한다. 이 문서는 macOS, iOS 및 iCloud 용 소프트웨어를 개발하는 개발자를 대상으로 작성되었다. 시스템 인터페이스를 사용하여 파일 및 디렉토리에 액세스하는 방법과 iCloud 간에 파일을 이동하는 방법을 보여준다. 또한 이 문서에서는 파일 작업을 가장 잘 수행하는 방법에 대한 지침을 제공하며, 새로 만든 파일을 어디에 배치해야 하는지 보여준다. 중요 macOS 앱에서 App Sandbox를 채택하면 많은 파일 시스템 기.. FileManager 파일 시스템의 컨텐츠에 대한 편리한 인터페이스 및 상호 작용의 기본 수단이다. Declaration class FileManager : NSObjectOverview 파일 매니저 오브젝트를 사용하면 파일 시스템의 컨텐츠를 검사하고 변경할 수 있다. FileManager 클래스는 대부분의 file-related manipulations 타입에 적합한 공유 파일 매니저 오브젝트에 대한 편리한 액세스를 제공한다. 파일 매니저 오브젝트는 일반적으로 파일 시스템과의 상호 작용을 하는 기본적인 모드이다. 이를 사용하여 파일과 디렉터리를 찾고, 만들고, 복사하고, 이동한다. 또한 파일 또는 디렉토리에 대한 정보를 얻거나 일부 속성을 변경하는 데 사용한다. 파일 위치를 지정할 때 NSURL 또는 NSString 오브젝.. 이전 1 2 3 4 다음