iOS

    [AutoLayout] Hugging Priority vs Compression Resistance Priority

    Intro 오늘은 미루고 미뤘던, 알지만 알지못했던 (이게 바로 정확히 아는게 아니닷!) Hugging Priority와 Compression Resistance Priority의 차이에 대해 정리해보겠습니다. 정리하면서 공부하는거죠,,하핳하ㅏ 시작하게씁니다~~! Intrinsic Content Size 먼저 해당 차이를 정리하기 전에 Intrinsic Content Size에 대해 아시나요?! 그대로 해석하면 '고유한 콘텐츠의 크기' 즉, 콘텐츠는 고유한 크기를 갖고 있다는 것입니다. 말 그대로 Label이나 Button 같은 것들은 자체로 Width, Height를 본질적으로 가지는데요. 라벨에 들어가는 텍스트의 길이나, 폰트 두께 등에 따라 알아서 Width, Height를 계산하여 보여줍니다. 그..

    [iOS] Table Views - Filling a Table with Data

    Intro 안녕하세요. 오늘은 TableView - Filling a Table with Data, 데이터를 채우는 부분의 공식문서를 정리했습니다. 가장 중요하고 기본적인 내용이라 잘 정리해보도록 하겠습니다 💪🏻 Apple Developer Documentation developer.apple.com 데이터 소스 객체를 사용해서 테이블의 셀을 동적으로 만들고 구성하거나 정적으로 제공합니다. (테이블 뷰에서 셀을 동적 or 정적으로 구성할 수 있죠? 주로 동적이지만..) Overview Table views는 인터페이스의 데이터 기반 요소입니다. UITableViewDataSource 프로토콜을 채택하는 객체를 사용해서 데이터의 각 부분을 화면에 렌더링하는데 필요한 View와 함께 App의 Data를 제공..

    [UIKit] UserDefault로 데이터 저장하기

    UserDefault를 사용하면 데이터 값이 plist에 값이 저장되어 영구적으로 사용 가능하다. 애플에서 공식문서를 보면 Key - Value로 구성되어 있는 Dictional 형태의 저장소임을 알 수 있다. 간단하게 값을 저장하고 불러오는 것이 가능하지만 plist에 저장되기 때문에 보안상 취약하다는 단점도 있다. 공식 문서 : https://developer.apple.com/documentation/foundation/userdefaults import UIKit let defaults = UserDefault.standard //선언 defaults.set(0.24, forKey: "Volume") //float defaults.set(true, forKey: "On") //bool defaul..

    [Timer] 타이머 숫자(초단위)를 { 분 : 초 }로 변경하기 (String format)

    혼자 하고 있는 개인 프로젝트가 있는데, 타이머를 사용해야 해서 View 별로 넘겨받은 걸리는 초를 어떻게 10:00 이렇게 바꿀지 코드를 공유하겠다. 생각보다 간단하게 생각한대로 구현하면 된다. 일단 내 플젝의 경우 1시간이 넘어가는 타이머가 필요 없다. 그래서 time에 초를 입력받으면 필요한 분, 초만 계산해서 원하는 형식으로 변환하여 String 타입으로 리턴했다. //시간 계산 func timeString(time: Int) -> String { let minutes = Int(time) / 60 let seconds = Int(time) % 60 return String(format:"%02i:%02i", minutes, seconds) } 이제 구한 타이머를 출력하면 되겠다 Text에 구현한..

    [SwiftUI] NavigationLink를 이용해서 페이지 이동하기

    처음에 버튼 이미지를 넣어놓고 이제 어떻게 페이지 이동하지? 고민하면서 구글링 한 결과, 버튼이 아닌 NavigationLink를 이용해야 한다. 페이지 이동이 한번만 될 뿐 아니라, 두세번 원하는 만큼 설정하면 계속 연결되어 구현 가능하다. 바로 코드로 설명 !! 아이콘을 누르면 바로 해당 목적지의 뷰로 넘어가지만, 나는 NavigationLink안에 NavigationLink를 또 넣어 스택이 쌓이는 것처럼 화면에 들어가고 또 들어가게 구현해 보았다. var body: some View { NavigationView(content: { VStack(spacing: 40) { NavigationLink( destination: PickRamen()) { Icons(actionText: ..