Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

분류 전체보기273

12. [SwiftUI] ForEach / .indices / Hashable 개발자는 반복 작업을 싫어하는 법.. (컴퓨터가 할 일이지) ForEach 루프를 활용해 효율적으로 여러 뷰를 만드는 방법에 대해 알아보자. 위의 예시와 같이 여러 원과 텍스트를 쉽게 찍어낼 수 있다. ForEach는 구조체이다. 말 그대로 Each, 각각.. 순서대로 돌아가며 작업을 하는 것이다. 이름이 대문자로 시작하는 것을 보면 눈치 챘을 사람이 있었을수도 있지만.. 얼핏 생각하면 메서드로 착각할 수도 있겠다. https://developer.apple.com/documentation/swiftui/foreach ForEach | Apple Developer Documentation A structure that computes views on demand from an underlying coll.. 2023. 4. 13.
11. [SwiftUI] init() SwiftUI에서는 Structure를 주로 사용하다 보니, 생성자에 대한 고려를 크게 하지 않고 있었다. 구조체에서는 memberwise initializer가 자동으로 제공되기 때문이다. 그런데 재사용성을 고려하고, 효율적인 코딩을 위해서는 생성자의 개념이 필요한 순간이 있을 수 있다. ex. 거의 같은 뷰인데 속성만 조금씩 바뀌는 경우 열거형과 생성자를 이용해 좀 더 효율적으로 비슷한 뷰를 그리는 방식에 대해 알아보자. // // Created by Toughie on 2023/04/12. // import SwiftUI struct initializer: View { //프로퍼티에 타입만 지정 let backgroundColor: Color let count: Int let title: Strin.. 2023. 4. 12.
19 - StaciView를 활용한 버튼 묶음_Floating buttons 우측 하단의 상자를 누르면 여러 메뉴가 뿅 튀어나오는 예시. 먼저 큰 그림. 저 파란상자 객체(버튼)를 뷰컨트롤러의 VieDidLoad안에서 생성해주고, 뷰에 올리고(잊지말자 addSubView), 수동으로 레이아웃을 잡아준다. (trailing, bottom만 잡아주면 된다.) 잊지말자 오토리사이징마스크 false! 그리고 뷰컨트롤러에서 생성해줄 버튼의 파일을 따로 만들자. UIView를 상속하는 클래스이다. 크게는 버튼이 있고, 안에 여러 메뉴가 담겨있는 스택이 있다. 버튼, 스택 변수는 init(frame: CGRact)에서 함수를 통해 초기화 시켜 준다. required init?(coder: NSCoder)도 잊지 말자. 초기화 함수들은 클래스 내부에서 바로 구현하기 보다는 (클래스가 너무 비대.. 2023. 4. 12.
init(frame:) & init(coder:) 커스텀 뷰(UIView를 상속)를 만들다 보니 아래와 같은 생성자들을 만났다. override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } 보통 아래 코드는 컴파일러 fix를 통해 그냥 추가했었는데.. 어떤 생성자들이고 왜 꼭 구현해야 하는지 궁금해져서 알아보았다. 먼저 init(frame:) https://developer.apple.com/documentation/uikit/uiview/1622488-init init(frame:) | Apple Developer Documentation Creates a.. 2023. 4. 11.
스위프트와 프로그래밍 패러다임 '스위프트의 언어적 특성' 안정성(Safe) 엄격한 문법을 통해 개발자의 실수 미연에 방지 옵셔널, guard, 에러처리, 타입통제 등을 통해 안전한 프로그래밍 가능 신속성(Fast) C언어 기반 프로그래밍 언어를 대체하려는 목적으로 만들어짐 C언어 수준과 성능과 속도가 동등한 수준이 되도록 꾸준히 발전되는 중 컴파일 속도도 빠름! (스위프는 컴파일 언어) 표현성(Expressive) 다양한 언어들을 참고해 편하고 읽기 쉬운 문법을 구현할 수 있음. '다중 패러다임 프로그래밍 언어' 스위프트는 명령형 프로그래밍과 객체지향 프로그래밍 패러다임을 기반으로 한 함수형 프로그래밍 패러다임 / 프로토콜 지향 프로그래밍 패러다임 지향. 객체지향 프로그래밍 패러다임 Object-Oriented Programming,.. 2023. 4. 8.
10. [SwiftUI] Spacer() 같은 사이즈로 계속 resize 되는 것을 알 수 있다! Spacer는 minLength 파라미터가 있다!(옵셔널) Spcaer(minLength: nil) == Spacer() minLength를 nil로 두어도 어느정도의 최소길이는 default로 있음. 만약 스택에 수평패딩을 많이 주면 중앙으로 쪼그라 드는데 붉은 정사각형의 스페이서만 최소 길이를 정해준 케이스이다.(혼자만 긴 것을 알 수 있다.) (오른쪽 사진은 minLength: 0인 케이스_완전 붙게 할 수도 있다.) 종료 및 설정 버튼을 만드는 시나리오 버튼 사이에 스페이서를 넣어 HStack로 묶고, 이 HStack과 스페이서를 VStack으로 묶어주면 된다. // Created by Toughie on 2023/04/04. // impo.. 2023. 4. 5.