본문 바로가기

반응형

Mobile/iOS

(23)
[iOS] StatusBar & SearchBar 설정 앱을 기획할 때 전체적으로 어두운 느낌을 갖도록 기획했습니다. 따라서 배경도 어두운 색상으로 갖고 있어서 StatusBar, SearchBar 등을 수정해야 할 필요가 있었습니다. 먼저 아무것도 설정하지 않은 상태에서의 StatusBar 와 SearchBar 의 모습입니다. 여기서 저는 StatusBar의 상태를 봐야할 필요가 있습니다. 검은 색 글씨로 표현되어 있는데요. 이것을 해결할 필요가 있어보입니다. 1. 다크모드로 설정 !? iOS에는 Light 모드와 Dark 모드가 있습니다. 밝은 곳에서는 Light 모드를 지원해주고, 어두운 곳에서는 Dark 모드로 변경해주도록 설정되어 있습니다. 하지만 제가 기획한 것은 애초에 Dark 모드만을 가정했기 때문에, Dark 모드만 사용할 수 있도록 설정해주..
[iOS] SearchBar PlaceHolder 색상 변경 방법 Navigation의 Title 부분에 SearchBar를 넣어서 구성해주었더니, 의도치 않게 StatusBar의 색상이 변경됨에 따라 Placeholder의 색상이 변경되었다. Placeholder의 색상을 고정해주기 위해 구글링한 결과 아래와 같이 코드를 넣어주면 해결이 된다. override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Navigation Title 부분에 들어가 있는 SearchBar의 placeholder 색상을 변경하기 위해 입력 self.searchBar .searchTextField .attributedPlaceholder = NSAttributedString(string: "검색어를 입력해..
[Project] Mission 02 개발하는 정대리 개인 미션 과제 1. URLSession과 RxSwift를 이용해 API를 호출 2. RxSwift에서 제공하는 TableView를 사용 3. Error 처리 4. Paging 처리 전체 코드 보기 TableView Delegate와 DataSource 사용 //MARK: - TableView DataSource extension FirstVC: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.mocksVM.mocks.value.count } func tableView(_ tableView: UITableView, cel..
[Project] Mission 01 개발하는 정대리 개인 미션 과제 오토레이아웃을 StoryBoard 형식, No StoryBoard 형식, SnapKit 적용 형식 등 세 가지 방식으로 만든다. StoryBoard 에서 오토레이아웃 적용 전체 코드 보기 No StoryBoard 형식으로 오토레이아웃 적용 StoryBoard 에서 오토레이아웃을 적용한 것을 바탕으로 스토리보드 없이 코드로 만든 화면입니다. SnapKit 사용 x let scrollView: UIScrollView = { let view = UIScrollView() view.translatesAutoresizingMaskIntoConstraints = false view.showsVerticalScrollIndicator = false return view }() // S..
iOS 개발 꿀팁 사이트 1. 공식 문서 https://developer.apple.com/documentation/uikit UIKit | Apple Developer Documentation Construct and manage a graphical, event-driven user interface for your iOS, iPadOS, or tvOS app. developer.apple.com 2. Color Code https://htmlcolorcodes.com/ HTML Color Codes Easily find HTML color codes for your website using our color picker, color chart and HTML color names with Hex color codes, RG..
[iOS] 커스텀 폰트 적용하는 방법 (코드UI) 00. 구글 폰트에서 적당한 폰트를 다운받아 줍니다. 01. 다운받은 폰트를 압축 해제하고 Xcode 드래그해서 넣어줍니다. 이때 AddTarget을 반드시 해당 프로젝트에 추가해주어야 합니다. 02. Info.plist에 몇 가지 추가합니다. 03. UIFont Extension 파일을 만든 후 아래와 같이 코드를 작성해줍니다. import Foundation import UIKit extension UIFont { public enum SunflowerType: String { case medium = "-Medium" case light = "-Light" case bold = "-Bold" } static func Sunflower(_ type: SunflowerType = .medium, siz..
[iOS] UIKit 미리보기 기능 추가(Preview) Extension 코드를 추가 UIKit를 사용하면서 미리보기 기능을 추가해주려면 SwiftUI를 사용해서 만들어주어야 합니다. 아래 코드를 새로운 파일 혹은 미리보기를 사용하려고 하는 파일에 추가해주세요. // ViewController+Ext.swift #if DEBUG import SwiftUI extension UIViewController { private struct Preview: UIViewControllerRepresentable { let viewController: UIViewController func makeUIViewController(context: Context) -> UIViewController { return viewController } func updateUIView..
[iOS] 커스텀 뷰 만들기(@IBDesignable & @IBInspectable) IBDesignable과 @IBInspectable을 이용해 커스텀 뷰를 만드는 방법에 대해 알아보도록 하겠습니다. 커스텀 뷰를 만드는 이유는 재사용 가능한 뷰를 만듦으로써 조금 더 쉽게 뷰를 사용하기 위함입니다. 1. 초기 세팅 우선 Main.storyboard에 뷰를 하나 만들어줍니다. 이 뷰를 ViewController.swift 파일에 @IBOutlet 으로 연결해줍니다. 저는 boxView로 이름을 만들었습니다. 다음으로 커스텀 뷰를 정의할 파일인 CustomView.swift 파일을 만들어줍니다. 2. @IBInspectable @IBInspectable은 스토리보드에서 뷰를 클릭했을 때 보이는 인스펙터에 속성을 보여주는 역할을 합니다. 말로는 이해가 잘 되지 않으실 수 있습니다. 아래 사진을..
[iOS] defer 블록 defer 블록은 함수나 메소드에서 코드의 흐름과 상관없이 가장 마지막에 실행되는 블록입니다. 지연블록이라고 부르기도 하는데, 이 블록에 작성된 구문은 항상 함수의 종료 직전에 실행되기 때문에 종료 시점에 맞추어 처리해야 할 구문이 있다면 우리는 어디에 작성해야 할지 고민하지 않고 defer 블록에 넣어두기만 하면 됩니다. 특징 defer 블록은 작성된 위치와 순서에 상관없이 함수가 종료되기 직전에 실행된다. defer 블록을 읽기 전에 함수의 실행이 종료될 경우 defer 블록은 실행되지 않는다. 하나의 함수나 메소드 내에서 defer 블록을 여러 번 사용할 수 있다. 이때에는 가장 마지막에 작성된 defer 블록부터 역순으로 실행된다. defer 블록을 중첩해서 사용할 수 있다. 이때에는 바깥쪽 de..
[iOS] 접근 제한자 간단 정리 접근 제한자 객체의 접근 범위를 명시적으로 정의하기 위해 제공된다. 이 접근 제한자들은 클래스나 메소드, 프로퍼티 앞에 작성되어 개별 객체와 속성에 대한 접근을 단계별로 허용하거나 차단하는 기능을 수행한다. 1. private 이 접근 제한자로 선언된 클래스와 메소드, 프로퍼티는 같은 클래스 내에서만 접근이 가능합니다. 2. fileprivate (3.0 버전부터 추가) 이 접근 제한자로 선언된 클래스와 메소드, 프로퍼티는 같은 파일 내에서 접근이 가능합니다. 3. internal 이 접근 제한자로 선언된 클래스와 메소드, 프로퍼티는 같은 모듈 또는 프로젝트 내에서 접근이 가능합니다. 접근 제한자를 선언하지 않고 클래스나 메소드, 프로퍼티를 정의하면 컴파일러는 기본적으로 internal 범위를 적용합니다..

반응형