본문 바로가기

iOS - 실무관련92

UINavigationController 보호되어 있는 글 입니다. 2022. 9. 26.
named Color 추가하기 (블로그 주소) https://medium.com/@bhavneetsingh08/apples-new-xcode-feature-named-color-371f59c37137 2022. 9. 24.
PreView(Ver: Xcode14) 1. PreView관련 용어 📌 PinControl 📌 📖 PageControls 📖 ✍🏼 Canvas Controls ✍🏼 (왼쪽부터) - Live: 실시간으로 동작(버튼, 스크롤 등등 작동함) - Seclectable: 실시간으로 동작하지 않음(버튼, 스크롤 등등 작동하지 않음) - Variants - Color Sceheme Variants: Light모드와 Dark모드를 비교해서 보여줌. - Orientation Variants: 세로모드, 가로모드(좌측으로), 가로모드(우측으로)된 화면을 비교해서 보여줌 - Dynamic Type Variants: 지정된 12가지 사이즈에 따른 다양한 UI를 비교해서 보여줌 - Device Settings: 하나의 PreView에서 다크모드로 할건지 안 할건지,.. 2022. 9. 24.
GeometryReader 참고 블로그 - GeometryReader는 무엇일까? 1. 정의 💡 GeometryReader는 그 자체로 ‘View’이며, container 안 View 스스로의 크기와 위치를 함수 정의를 봐도 무슨말인지 모르겠다. 따라서 참고 블로그에서 이해한 내용을 요약해보겠다. View를 구성할 때는 HStack, VStack, ZStack을 적절히 사용해서 만들 수 있다. 때때로 하위뷰들의 위치나 크기(모양)을 직접 조작해야하는 경우가 생긴다. 이때 사용하는 것이 GeometryReader이다. 하위뷰의 별다른 설정이 없다면 상위뷰가 제안해준 곳에 위치한다. 2. GeometryReader 사용해보기 [왼쪽 사진] Text는 특별한 수식어가 없기 때문에 가장 상단에 위치하고 남은 공간을 RightView가 채.. 2022. 9. 23.
왜 @IBOutlet에 didSet으로 설정을 몰아 놓는가? 보호되어 있는 글 입니다. 2022. 9. 20.
List 1. 정의 💡 List는 하나의 열에 여러개의 행으로 표현되는 UI를 구성해 다중 데이터를 쉽게 나열할 수 있도록 구성된 View이다. 2. 사용예시 아래의 예시처럼 Stack처럼 UI를 감싸주면된다. 3. 동적 컨텐츠 [1. Range] List(0.. 2022. 9. 20.
NavigationLink 1. 정의 💡 지정한 목적지로 이동할 수 있도록 만들어진 버튼으로, 뷰를 눌렀을 때 또는 미리 지정된 특정 조건을 만족했을 때 화면전환 2. 사용예시 NavigationLink(destination: ) { 화면전환이 되도록 만드는 버튼의 UI } 2022. 9. 20.
NavigationView 1. 사용법 💡 사용법은 Stack을 사용하는 것처럼 감싸주기만 하면된다. 2. NavigationBarTitle NavigationBarTitle 수식어로 제목을 표현할 수 있다. NavtigationBarTitle은 기본적으로 automatic모드로 설정되어있지만 large, inline모드로 설정이 가능하다. 3. NavigationBarItems BarItem은 NavigationView 내부에서 만드는게 아니라 외부에서 만들어서 navigationBarItems(leading: ,trailing: )을 사용해서 적용해준다. 만약 여러개의 item을 넣고 싶다면?? -> HStack을 사용하자. 4. hidden 수식어 navigationBarHidden - 네비게이션 바 숨김 navigation.. 2022. 9. 20.
UIView 보호되어 있는 글 입니다. 2022. 9. 17.
UIColor 보호되어 있는 글 입니다. 2022. 9. 17.
Float 보호되어 있는 글 입니다. 2022. 9. 17.
String 보호되어 있는 글 입니다. 2022. 9. 17.
Int 보호되어 있는 글 입니다. 2022. 9. 17.
Device관련 Extension 보호되어 있는 글 입니다. 2022. 9. 17.
BaseViewController 보호되어 있는 글 입니다. 2022. 9. 17.
내가 만든 Template 모음 보호되어 있는 글 입니다. 2022. 9. 17.
Button 1. 기본적인 사용방법 Button(action: { //버튼이 터치되었을 때 수행할 작업 }) { Text("Button) // 버튼 UI } 2. 텍스트를 이용해서 버튼 만들기 import SwiftUI struct ContentView: View { var body: some View { HStack(spacing: 10) { // 1) 단순히 텍스트로만 버튼을 표현할 때 Button("B1") { print("B1") } // 2) 먼저 텍스트를 만들고 외곽선을 추가할 때 Button(action: { print("B2") }) { Text("B2") .padding() .background(RoundedRectangle(cornerRadius: 10).strokeBorder()) } // 3) .. 2022. 9. 14.
WidgetKit에 대한 간단한 설명 // 참고 URL: https://zeddios.tistory.com/1088?category=796110 import WidgetKit import SwiftUI // TimelineProvider: Widget의 디스플레이를 업데이트 할 시기를 WidgetKit에 알려주는 타입 struct Provider: TimelineProvider { func placeholder(in context: Context) -> SimpleEntry { SimpleEntry(date: Date()) } // 현재 상태를 나타내는 스냅샷을 가져오는 메소드 func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { let entry.. 2022. 9. 13.
Image 1. 정의 💡 SwiftUI에서 Image는 UIKit에서 ImageView와 같다. SwiftUI에서 이미지를 다룰 때 알아야할 것은 이미지는 기본적으로 주어진 공간과 관계없이 그 고유의 크기를 유지한다는 것이다. frame 수식어를 사용해도 이미지 원본 크기는 유지하고 뷰가 차지하는 공간만 커진다. (아래 참고) 그래서 이미지 크기를 변경해야하는 경우 resizable 수식어를 적용해야한다. 2. Resizable 💡 이미지 크기를 변경해야하는 경우 resizable 사용 🚧 주의할 점은 Resizable 수식어는 Image에만 적용되기 때문에 frame 수식어보다 먼저 적용되어야한다. 🚧 3. ContentMode 💡 주어진 공간 이외에까지 이미지 확장할 때 사용 UIKit SwiftUI 설명 Sc.. 2022. 9. 7.
WKWebView - 웹사이트의 버튼이 안눌러질 때? //busy version func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { print("scheme: \(navigationAction.request.url?.scheme)") if let url = navigationAction.request.url , ["버튼을 클릭했을 때 출력되는 scheme"].contains(url.scheme) { UIApplication.shared.open(url, options: [:], completionHandler: nil) decisionH.. 2022. 8. 18.
NotificationCenter로 다른 VC 조종하기 NotificationCenter란? NotificationCenter 에 등록된 event 가 발생하면 해당 event에 대한 행동을 취합니다. 앱 내에서 메세지를 던지면 아무데서나 이 메세지를 받을 수 있게 하는 역할을 합니다. 보통 백그라운드 작업의 결과, 비동기 작업의 결과 등 현재 작업의 흐름과 다른 흐름의 작업으로부터 이벤트를 받을 때 사용합니다. NotificationCenter으로 다른 VC 조종하기 1. 데이터를 보내는 VC (본인이 원하는 타이밍에) NotificationCenter.default.post(name: Notification.Name(rawValue: "지정할 이름"), object: nil) 2. 데이터를 받는 VC // 옵저버 등록 NotificationCenter.d.. 2022. 8. 17.
overlay - View 중첩 1. 정의 💡 View의 원본의 공간을 기준으로 기 위에 새로운 View를 중첩해서 쌓는 기능을 하는 수식어 2. 사용방법 1. 기본 사용법 struct CircleImageView: View { var body: some View { Image("turtlerock") .clipShape(Circle()) .overlay { Circle() } } } 기존 ImageView 크기에 맞춰서 검은색(기본값)의 원형 View 생성 2. 크기를 조정한 사용법 struct CircleImageView: View { var body: some View { Image("turtlerock") .clipShape(Circle()) .overlay { Circle() .frame(width: 200.0, height:.. 2022. 8. 10.
.clipShape( ) - 이미지 모양 변경하기 1. 정의 💡 clipShape은 해당 View의 모양을 설정하는 것이다. 2. shape의 종류 Circle() - 원형 Ellipse() - 타원형 Rectangle() - 직사각형 RoundedRectangle(cornerSize: CGSize(width: ,height: )) - 모서리가 둥근 직사각형 RoundedRectangle(cornerRadius: 30): 둥근모서리 2022. 8. 10.
Spacer( ) - UI사이의 간격 만들기 출처 - 서근님 티스토리 1. Spacer의 정의 💡 Spacer( )란 View 사이의 간격을 설정하거나 View의 크기를 확장할 용도로 사용되는 레이아웃을 위한 View이다. 2. Stack 외부의 Spacer VS Stack 내부의 Spacer [Stack 외부의 Spacer] 부모 뷰가 제공하는 공간 내에서 가능한 최대 크기로 확장 시작적 요소를 적용할 수 있는 하나의 뷰로 사용 //스택 외부에서 struct ContentView: View { var body: some View { Spacer().background(Color.blue) //공간 최대 확장. 시각적 요소 표현 가능 } } [Stack 내부의 Spacer] 시각적 요소가 제외되고 단지 공간을 차지하기 위한 역할로만 가능 만약 콘텐.. 2022. 8. 10.
IBSegueAction사용해서 화면전환하기 ✍🏼 상황: 테이블 뷰를 클릭했을 때 화면이 전환되면서 클릭한 cell의 title이 전환된 화면 중앙에 나타난다. ✍🏼 1. 화면구성하기 아래와 같이 화면을 구성해준다. Navigation Controller - TabeView가 있는 ViewController Label이 있는 ViewController 2. Segue연결해주기 아래와 같이 화면을 Segue로 연결해서 화면 전환을 시켜준다. Navigation Controller - TabeView가 있는 ViewController ---(Segue)--- Label이 있는 ViewController 3. IBSegueAction연결하기 + Segue Identifier 입력하기 아래와 같이 Segue를 우클릭해서 IBSegueAction을 만들어주.. 2022. 8. 4.
Designated Init / Convenience Init / Failable Init / Super.init / required init Designated Init (지정 초기자) 클래스 타입은 반드시 한개 이상의 Designated Init이 필요하다. 클래스의 모든 프로퍼티를 초기화해야한다. class Person { var name: String var age: Int? var address: String init() { name = "DH" address = "서울특별시" } init(name: String, address: String) { self.name = name self.address = address } } Convenience Init (보조 초기자) Convenience init 내부에서 반드시 Designated Init이 호출되어야 한다. (self.init()) class Person { var name: S.. 2022. 7. 30.
Stack SwiftUI에서 Stack은 VStack, HStack, ZStack 총 3개가 있다. VStack은 "Vertical Stack", HStack은 "Horizontal Stack", ZStack은 "Z axis Stack"을 의미한다. (위의 그림참고) 각각의 Stack을 다루는 방법을 배워보자. 1. VStack [VStack 확인하기] VStack 내부에 Rectangle() 3개를 추가하면 아래와 같은 화면이 뜬다. VStack 내부에 추가했기때무에 수직으로 쌓인다. [VStack의 속성] 1. VStack의 크기 설정과 백그라운드 설정 VStack의 크기는 frame(width: ,height: )를 사용해서 조절할 수 있다. .frame(width: ,height: ) 2. VStack 내부.. 2022. 7. 18.
Set Image 오늘은 위와 같이 이미지와 Text를 이용한 프로필화면을 구현해보자. 시작하기 전에 SF Symbols(애플의 시스템 이미지를 사용하기 위함)를 다운 받아주자. (링크) 1. Circle ImageView 만들기 우선 새로운 파일을 만든다. (CircleImageView) 그리고 아래와 같이 ContentView처럼 틀을 만들어준다. [만들기 전 ImageView에 대한 경험] import SwiftUI struct CircleImageView : View { var body: some View { Text("CircleImageView") } } struct CircleImageViews: PreviewProvider { static var previews: some View { CircleImageV.. 2022. 7. 15.
Text 여러 Component들은 해당 Component의 텍스트를 작성하고 .(dot)으로 그 Component에 대한 속성을 작성해서 UI를 구현한다. Text도 마찬가지로 아래와 같이 구현이 가능하다. import SwiftUI struct ContentView: View { var body: some View { Text("Hello, world!") .font(.system(size: 30)) .fontWeight(.heavy) .foregroundColor(.green) .background(.orange) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } 1. 폰트 [.. 2022. 7. 14.
웹뷰 띄우기 1. 웹View 만들기 우선 웹뷰를 만들기 위해서 새로운 파일을 하나 만들자. 코드를 작성하기 이전에 없는 info.plist를 만들어주자. (나타내자) - 링크 import SwiftUI import WebKit //MARK: UIViewRepresentable: UIKit의 UIView를 사용할 수 있도록 한다. struct MyWebView: UIViewRepresentable { var urlToLoad: String //MARK: - UIView 만들기 func makeUIView(context: Context) -> WKWebView { //언래핑 - 너가 가져온 url 값이 비어있다면 WKWebView를 반환 guard let url = URL(string: self.urlToLoad) el.. 2022. 7. 13.