분류 전체보기

    iOS - 애니메이션효과

    UIView.animate(withDuration: 0.3) { //지속시간 self.stackView.layoutIfNeeded() } stackView내부의 객체가 변화한다면 (오토레이아웃)동적으로 변화하게끔 만들어 애니메이션 효과를 줄 수 있다.

    iOS - Code UI(Auto Layout)

    오토레이아웃 width : 정렬 사각형의 너비 height: 정렬 사각형의 높이 top: 정렬 하각형의 상단 bottn: 정렬 사각형의 하단 Horizontal: 수평 Vertical: 수직 Leading: 리딩, 왼쪽 Trailing: 트레일링, 오른쪽 CenterX: 수평중심 CenterY: 수직중심 Anchor 오토레이아웃을 활용해 어떤 중심을 기준으로 얼마나 띄울건지에 대한 것을 Anchor라고 한다. top = topAnchor / leading = leadingAnchor 높이 = heightAnchor / 넓이 = widthAnchor // leading 얼마를 띄울건지 //상속받은 view의 leading을 기준으로 //30만큼 //활성화 //true emailTextFieldView.le..

    iOS - Network 연결 확인하기(Swift)

    Network 프레임워크를 사용해서 현재 기기의 인터넷 연결 상태와 연결 타입을 알 수 있다. 네트워크 연결을 지속적으로 감지하여 연결이 끊기면 실시간으로 알려준다. 1. NetworkMonitor 클래스 생성 Network 프레임워크를 import하고 네트워크 연결을 감지하는 싱글톤 패턴의 클래스를 별도로 만든다. NWPathMonitor로 현재 네트워크 연결 상태를 확인할 수 있다 // file: NetworkCheck.swift import Foundation import Network final class NetworkCheck{ static let shared = NetworkCheck() private let queue = DispatchQueue.global() private let moni..

    [Swift] @propertyWrapper(프로퍼티 래퍼)

    @Property Wrappers property wrapper는 속성 저장 방법을 관리하는 코드와 속성을 정의하는 코드 사이에 구분 계층을 추가한다. 예를 들어, 쓰레드 안전성 검사를 제공하거나. 자신의 실제 자료를 데이터베이스에 저장하는 속성이 있다면, 모든 속성에 대해 그 코드를 작성해야 한다. 프로퍼티래퍼를 사용할 땐, 래퍼를 한 번 작성하면 여러 속성에 적용함으로써 관리 코드를 재사용한다. 프로퍼티 래퍼를 정의하기 위해 wrappedValue 프로퍼티를 정의한 구조체, 열거형 또는 클래스를 만든다. TwelveOrLess구조체는 래핑하는 값이 항상 12와 같거나 더 작은 숫자가 저장된다는 것을 보장한다. . 더 큰 숫자를 저장하면 12를 대신 저장한다. @propertyWrapper struct..

    [Swift] Properties(속성)

    Stored Properies (저장속성) 가장 단순한 형식의 저장속성은 클래스나 구조체 인스턴스의 일부분인 상수, 변수이다. 저장속성은 var를 사용하면 변수, let을 사용하면 상수 저장속성이다. 저장속성(변수, 상수)은 기본값(default value)를 가질 수 있다. struct FixedLengthRange { var firstValue: Int let length: Int } var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) // the range represents integer values 0, 1, and 2 rangeOfThreeItems.firstValue = 6 // the range now represents ..

    [UIKit] UISlider

    보호되어 있는 글입니다.

    [Swift] available 키워드

    @available 타입, 속성, 메서드 앞에 사용 @available(iOS 10.0) // iOS 10.0 에서만 적용되는 클래스 class Myclass{} @available(iOS 11.0, *)// iOS 11.0 이상에서만 doSomething이란 함수가 있다고. func doSomething(){} 앱이 업데이트 되거나 하면 iOS버전에 따라서 적용이 되는 기능이 생길 수 있다. 이런 경우에 에러의 발생을 막기 위해 사용한다. #available 조건문( if / guard / while ) 문에서 사용 if #avilable(iOS 11.0, *){ //iOS ii.0이상에서는 여기 } else { // 이외에서는 여기 }

    [Swift] #selector(셀렉터)

    #selector 메서드 주소를 통해 메서드를 가리키기 위한 기술 물론 메서드 주소를 통해 메서드를 호출할 순 없다. 단순하게 메서드를 가리키는 것? 셀렉터는 속성에 접근이나 메서드를 호출하는게 아니다. 가리키기만 한다. 코드 영역의 메모리 주소를 가리켜서, (버튼이 눌렸을 때 해당 메서드를 실행시키기 위해) 연결시키는 기술 클래스와 Objective-C 프로토콜에 포함된 멤버에만 적용 가능하다. 구조체는 적용이 불가능하다. 내부적으로 Objective-C프레임워크를 사용하고 있다. @objc 특성을 추가해야지만 사용 가능하다. #selector( 메서드 ) 셀렉터 내부에 메서드를 명시하게되면 해당 메서드를 가리키게 되고 이를 변수에 할당하면 셀렉터 구조체가 생성된다. 소스코드를 통한 이해 class D..

    [Swift] #keyPath

    #keyPath와 #selector는 문법적인 내용이 아닌 Framework와 관련된 내용이다. objc부터 쓰이던 기술임에도 불고하고 여전히 쓰이던 내용이다. framework 내부적인 메커니즘에 여전히 objc를 떼어놓고 사용할 수 없는 몇 가지 기술들이 있기 때문에 여전히 쓰인다. 물론 버려져야함.. #keyPath person.name ⬇️ "person.name" or person["name"] 이런식으로 접근하면 안될까? 키경로(문자열처럼 쉽게 만들 수 있는 인스턴스)/ 문자열로 속성에 접근하는 것이 편하지 않을까? 라는 생각으로 시작된 문법?? 이런 문법이 필요한 예를 들어보자. class Restaurant{ var name: String var affiliate: Snack init(na..

    [Swift] 디버깅(테스트/검증)함수 assert, precondition

    디버깅(테스트/검증)함수 앱을 테스트 하면서, 런타임동안 발생할 수 있는 여러 버그의 가능성, 잘못된 코드의 검증등을 수행하도록 도와주는 함수 print(), dump() 일종의 디버깅 함수이다. 어떤 코드들이 입력되는지 콘솔창을 통해 확인/검증 할 수 있으므로. 디버깅 함수 assert() assertionFailure() precondition() preconditionFaulure() fatalError() assert() ➡️ 실제 앱을 출시시, 일부러 앱을 종료시켜야하는 상황은 아니지만, 디버그 모드에서 검증 예) 레이블에 20 % / 30% /... 100% 표시한다고 했을때, -10%라고 표시된다고 굳이 앱을 종료시켜야 하는가? precondition() ➡️ 실제 앱을 출시시에도 앱을 의도..