WooKoo Blog

물과 같이

분류 전체보기 123

[SwiftUI] - Image 이미지

이미지를 불러오는 방법은 Image("imageName") 이미지를 유지하고 이미지가 담긴 뷰의 크기를 조절하려고 할 땐 Image("imageName").frame(witdh: 200, height: 200) 이미지 크기를 리사이징 하고 싶다면 Image("imageName").resizeble().frame(witdh: 200, height: 200) 중요한 것은 resizeble()을 frame 앞에 두어야한다. 이미지 타입에 선언 되어있는 것이므로 뷰 프로토콜 이전에 선언되어야 정상적으로 에러없이 호출된다. 기본값으로 Scale to Fill 이 적용되어있는데 (비율에 관계없이 이미지를 늘려 공간을 가득채움) Aspect Fit(.scaledToFit()) Image("SwiftUI").resiz..

개발/개발 2020.08.29

Swift - 저장 프로퍼티(Stored Properties)

저장 프로퍼티(Stored Properties) 지연 저장 프로퍼티(Lazy Stroed Properties) 연산 프로퍼티(Computed Properties) 프로퍼티 감시자(Property Observers) 타입 프로퍼티(Type Properties) 프로퍼티의 종류에는 위와 같이 5가지가 있다. 프로퍼티는 클래스, 구조체, 열거형과 연관된 값입니다. 타입과 관련된 값을 저장할 수도, 연산할 수도 있습니다. (변수, 메소드 등) 이번 포스트에서는 저장 프로퍼티에 대해 알아볼 것 이다. 저장 프로퍼티(Stored Properties) // // main.swift // Stored Property // // Created by 1 on 2020/08/21. // Copyright © 2020 woo..

개발/개발 2020.08.21

Swift - weak, unowned 차이

오늘은 강한 순환 참조가 발생했을 때 해결하기 위한 방법으로 weak, unowned를 사용하는 것을 알고 있었는데 weak?과 unowned의 차이에 대해 좀 더 자세하게 알아보려고한다. 평소에 weak은 nil을 반환하고 unowned는 정말 확실할 때 사용하는데 앱이 크래쉬나서 사용을 안하는걸 추천하는걸로 알고 있었지만 존재하는 이유가 있을 것 아닌가!? 그래서 한번 정리해보려고한다. weak 약한 참조! - 참조하는 인스턴스를 약하게 유지하는 참조 다른 인턴스의 생명주기가 짧을 때 사용 다들 아시다시피 nil값으로 변경 될 수 있기때문에 옵셔널 타입의 변수로 선언되어야함!! Unowned 미소유 참조! - weak과 마찬가지로 약한 참조 미소유 참조는 다른 인스턴스와 같은 생명 주기를 가지거나 더..

개발/개발 2020.08.20

Swift - 프로토콜 프로그래밍을 지향하는 이유

스위프트는 프로토콜 지향 프로그래밍이라고한다. 왜 프로토콜을 지향하는지 알아보자. 클래스의 경우 참조타입으로 참조 추적에 대한 오버헤드가 많이 발생하게된다. 구조체의 경우에는 상속이 되지않아 확장하고 싶음에도 그럴 수 없다. 또한 다중 상속과 같이 원하는 기능을 각 구현 할 수 있으므로 프로토콜을 지향한다.

개발/개발 2020.08.11

iOS - UI를 Storyboard와 xib 그리고 Code의 장단점 비교 정리

오늘은 iOS의 UI를 구성하는데 있어서 대표적인 3가지 방법들의 장단점을 정리해보려고합니다. 자 그럼 시작해보겠습니다. (주관적인 정리이니 정답은 아닙니다!) Storyboard의 장점 - 구현하기가 쉽고, 빠르게 프로토타입을 만들 수 있다. - 네비게이션의 흐름을 쉽게 파악 할 수 있다. - Static Cell을 이용 할 수 있다. (storyboard에서만 이용 가능한 기능이라네요!) Storyboard의 단점 - 여러 사람이 작업 할 경우 merge 충돌이 일어날 수 있다. - 재사용을 하고자 할 때 뷰 컨트롤러 자체를 함께 복사해야함으로 재사용성이 낮다. xib의 장점 - storyboard에 비해 조금 더 구체적인 UI 구현이 가능하다. - merge 충돌이 storyboard에 비해 적다...

개발/개발 2020.08.09

[iOS] - XML Parse사용법

기본적으로 코코아 터치 프레임워크에서 제공하는 XMLParseDelegate를 사용했다. XMLParseDelegate를 클래스에 채택해주고 클래스를 하나 만들어준다. var currentElement = "" class CheckStation{ var checkS:String? } var checkArray: Array = [] var checkStation:CheckStation? 여기서 currentElement는 parse 함수에서 사용될 건데 태그들이 들어갈 변수이다. 클래스를 만들어주고 배열을 하나 만들어주자. 왜냐하면 같은 태그의 데이터가 여러개 일 수 있다. // XML 파서가 시작 테그를 만나면 호출됨 func parser(_ parser: XMLParser, didStartElement..

개발/개발 2020.06.05

[iOS] - 위치정보(위도 경도 획득하기)

제일 먼저 info.plist에서 위와같은 칼럼을 추가해준다. Privacy - Location When In Use Usage Description - 앱이 사용중일때만 가져오기 Privacy - Location Always and When In Use Usage Description - 앱을 사용안해도 항상 가져오기 이니까 필요에 따라 수정한다. 그 후 // // ViewController.swift // GonZee // // Created by 1 on 2020/05/31. // Copyright © 2020 wook. All rights reserved. // import UIKit import CoreLocation class ViewController: UIViewController, CLL..

개발/개발 2020.05.31