본문 바로가기

분류 전체보기

WKWebview를 이용한 Javascript, Swift 양방향 통신 아래 작성된 방법은 WebView 가 로드될 때 실행되는 것을 기준으로 하였으며 네이티브 앱에서 버튼을 누르거나 특정 동작을 할 때 Javascript 로 값을 전달하고 싶은 경우에는 아래 블로그에 나온 방법(evaluateJavascript)을 참고합니다. evaluateJavascript 참고 블로그 [SWIFT] 웹뷰와 자바스크립트 연동 (Native JavaScript 통신 방법) 1. Swift → Javascript 1) Javasc..
@IBDesignable , @IBInspectable in Custom Object 사용된 예제는 꼼꼼한 재은씨의 Swift : 실전편 을 토대로 작성하였으며 설명 또한 인용한 부분이 있습니다. @IBDesignable 커스텀 객체(버튼, 스테퍼 등)를 스토리보드에서 미리보기 하고 싶을 때 해당 클래스 정의 구문 위에 추가합니다. @IBInspectable 커스텀 객체(버튼, 스테퍼 등)의 속성을 스토리보드 내에서 변경하고 싶은 경우 해당 속성을 선언할 때 추가합니다. 설명 커스텀 객체를 만들 때 프로그래밍 방식을 사용..
sizeToFit 함수와 center 속성을 함께 사용하는 경우에 작성 순서 sizeToFit 뷰의 크기에 맞게 변경, UIView 의 함수 이며 아래와 같이 Label 에 사용하는 경우에는 해당 라벨 길이에 맞게 크기가 변경됩니다. center 뷰 프레임 사각형의 중심점, 이 역시 UIView 의 함수 이며 Label 프레임의 중심점을 정합니다. 설명 아래와 같이 라벨을 만들 때 sizeToFit 과 center 를 사용하는 경우에는 sizeToFit 을 호출한 후에 center 속성을 설정 해주는 것이 바람직합니..
클래스 내에 멤버 변수를 사용할 때 초기화 시점에 따른 메모리 차지 비교 인스턴스 label1 은 선언과 동시에 초기화 label2 은 선언과 초기화를 분리하고 viewDidLoad 에서 초기화 설명 프로그래밍 방식의 UI 생성을 연습하기 위해 작성한다면 아래와 같은 코드는 큰 차이점이 없습니다. 하지만 뷰 컨트롤러의 인스턴스만 생성한 후 화면으로 이동하지 않는다면 label1 인스턴스는 메모리만 차지하게 됩니다. 반면, label2 인스턴스는 뷰 컨트롤러가 화면에 표시될 때 인스턴스가 생성되므로 메모리를 미리..
Swift 코드 작성시 변수와 함수 순서 정답은 아니지만, 보편적으로 호출순서 혹은 변수부터 함수순으로 정의합니다. 현재 사용하는 순서는 다음과 같습니다. let, var @IBOutlet ViewDidLoad @IBAction function
프로토타입 셀 제어 두가지 방법 : tag in attribute inspector , custom class 제어방법 1 : tag in attribute inspector 제어방법 2 : custom class 아울렛 변수를 뷰 컨트롤러에 직접 정의하면 셀 내부 객체들이 정적인 객체가 되므로 사용하는데에 문제가 생깁니다. 커스텀 클래스에 아울렛 변수를 정의하면 이는 동적으로 사용할 수 있는 형태의 객체가 되기 때문에 아울렛 변수를 통해 객체를 관리할 수 있습니..
이미지 사용 용도에 따른 UIImage 생성자 선택 생성자 종류 1. Loading and Caching Images init?(named: String, in: Bundle?, compatibleWith: UITraitCollection?) init?(named: String) init(imageLiteralResourceName: String) 2. Creating and Initializing Image Objects init?(contentsOfFile: String) init?(data..
Status Bar 색상 지정 방법 두가지 방법이 있지만 첫번째 방법은 권장하지 않음 앱 전체에 대해 설정 info.plist - View controller-based status bar appearance - NO AppDelegate 에 아래 코드 작성func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:..
@IBAction, 뷰끼리 값전달, 델리게이트, 최초 응답자 간단한 정보 @IBAction 타입 지정할 때 기준 개별 타입을 선택해야 할 때 액션 메소드를 호출한 컨트롤의 속성값이 필요하거나, 이를 제어해야 할 때 Any 타입을 선택해야 할 때 서로 다른 타입의 컨트롤이 동일한 액션 메소드를 호출하게끔 처리하고 싶을 때 액션 메소드를 호출한 컨트롤의 정보가 필요 없을 때 개별 타입을 반드시 사용해야 하는 경우를 제외한 나머지 모든 경우 뷰 사이에서 값 전달할 때 프로퍼티로 받는 이유 A뷰에서 B뷰로 값을 넘길 ..
*.pbxproj 삭제 했을 때 대처하는 방법 *.pbxproj 삭제 했을 때 대처하는 방법 (단, Git Commit 존재해야 합니다)대처방법1. Git reset 명령어 이용해서 gitignore 에 pbxproj 파일 제외하기 바로 이전 커밋으로 돌아가서 project.pbxproj 파일 복사2. 다시 최근 커밋으로 돌아옵니다.3. 프로젝트 파일 - .xcodeproj 파일 오른쪽 클릭 - 패키지 내용보기 - .pbxproj 파일 붙여넣기4. 3번에서 project.xcworkspace 삭..