본문 바로가기

IOS32

App의 기본구조 UIApplication - App의 기본구조 UIApplication: 애플리케이션의 라이프 사이클을 관리하는 싱글톤 클래스 화면을 터치하여 앱을 실행시키면 UIApplication이라는 클래스에 오프젝트 하나가 생긴다. 자신의 이벤트를 대행해줄 AppDelegate라는 오브젝트를 만든다. AppDelegate라는 Object는 개발자가 직접 만들어가는 클래스이다. Application의 시동, 종료, Background,Foreground, in-active, active 상태로 다녀오는 것을 관리한다. 가장먼저 하는 일은 window을 만드는 것이다. iOS에서는 기본적으로 Single-window이다. 하나의 window가 앱 전체를 채우고 있고, 앱을 종료하면 window가 종료된다. App에서.. 2023. 2. 11.
오토레이아웃, Anchor, IBDesignable, IBInspectable 오토레이아웃 : 레이아웃을 자동으로 계산 Anchor View를 액자라고 생각하고 전체 화면을 벽이라고 생각하자. 액자는 걸지않으면 아래로 떨어지기때문에 Anchor(앙카)를 달아주어야한다. 자리를 잡으면 파란색 잡지못하면 빨간색으로 표시된다. 오토레이아웃의 성립조건 너비와 높이 지정 : 스크린사이즈를 기반으로 뷰의 크기 설정 width height 위치 지정 : 앵커로 설정 가로 → X축 세로 → Y축 뷰를 기준으로 앵커를 양옆에 달아주면 Xcode자체에서는 기기의 화면을 알고있기 때문에 자동으로 크기를 잡아줄 수가 있다. Constraint First item: X를 Second item: Y로부터 Constraint 만큼 오토레이아웃을 잡을 뷰의 이름이 헷갈린다면 이름을 수정해서 확인해볼 수 있다... 2022. 11. 7.
오토레이아웃 뽀개기 이번 공부는 정대리님의 오토레이아웃 셀프사이징 유튜브 영상을 토대로 정리했습니다. 출처: https://www.youtube.com/watch?v=RsulV-KCtss 오토레이아웃의 개념 레이아웃을 자동으로 계산 뷰의 위치 : 앵커로 제공 가로 → X축 세로 → Y축 뷰의 크기 : 스크린사이즈를 기반으로 뷰의 크기 제공가능 width height Constraint First item: X를 Second item: Y로 conflicting Constraint 오토레이아웃시 UI에 서로 충돌하는 Constraint를 넣어줄 경우, 좌우 앵커가 우선이 된다. Constraint를 지워도 되고, 빨간 버튼을 눌러서 충돌하는 값을 선택해도 지워진다. 스토리보드에서 복제하기 필요한 것을 클릭하고 option⌥ .. 2022. 5. 14.
iOS 키보드 타입을 더이상 찾아해매지말자. 서론 텍스트필드를 생성하고 해당작업을 테스트를 하다보면 사용자가 해야하는 작업을 정말 여러번 해야하는 경우가 있습니다. 중간에 얼럿, 비밀번호를 입력하는 로직을 개발하면서 ....대체 비밀번호를 입력을 했는지 모를정도로 테스트를 했어요. 키보드가 켜졌을 때, 내가 원하는 키보드가 아니면 한영, 숫자선택 을 꼭 눌러야하는데요. 결국은 사용자가 해야하는 작업을 여러 차례 하는 것이지만 조금이라도 간편해질 수는 없을까 생각해봤습니다. 사실 제가 편하자고... 예를 들면 텍스트필드(빈칸)에 입력할 때, 이메일 키보드가 나오든지 숫자패드가 나오든지 등을 결정하는 거 . 별거 아닌데 사용경험에 작업하나라도 줄면 좋을것같아서요. 다들 당연히 하시는 작업이긴한데 저는 자꾸 까먹어서 정리했습니다 키보드타입의 종류 키보드.. 2022. 4. 28.
MyWebBrowser프로젝트를 통한 웹뷰 뜯어먹기 일단 앞으로 여러가지 기능을 앞으로 구현하기위해 간단하게 기능을 추가해보려고 한다. 그리고 편의상 모든 포스팅은 편의 말투로 작성합니당 프로젝트생성 프로젝트는 원하는 폴더에 생성합니다. 세팅 sceneDelegate는 사용하지 않을 예정이기 때문에 아래 세가지 작업을 진행한다. - SceneDelegate.swift 파일 삭제 - AppDelegate var window: UIWindow! 입력 AppDelegate에 있는 UISceneSession과 관련된 두 메소드 삭제 info.plist에 등록된 Application Scene Manifest 삭제 -> 삭제 안할경우 AppDelegate에 정상작동을 안해요 iOS13을 지원하게 된 이후부터 프로젝트엔 자동으로 SceneDelegate가 세팅되어있.. 2022. 4. 8.
비즈니스 로직 비즈니스 로직 정의 위키백과를 살펴보면 아래와 같이 정의되어있다. 비즈니스 로직 (Business logic)이란 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성·표시·저장·변경하는 부분을 일컫는다. 유저가 바라는 결과물을 올바르게 도출하기 위해서 꼭 필요한 과정이기에 프로그래밍에서 빠질 수 없는 요소이며, 응용 프로그램의 핵심이 된다. 비지니스 로직은 유저가 바라는 결과물을 코드로 옮기므로 코드가 자주 변경되므로, 코드 품질도 매우 중요합니다. 비지니스 로직이 정리되지 않고 이곳 저곳 산재 배치되면, 코드 관리가 어려워지고, 개발을 어렵게 하는 요인이 될 수 있다. 그로 인하여 생산성, 품질등이 저하 된다. 비즈니스 로직은 정말 중요하지만, 유지보수 와 확장성을 고려한 코딩을 하기란 쉽지 않습니.. 2022. 3. 21.
로그를 출력할 때 사용하는 함수들 Swift에서 콘솔창에 로그 쉽게 출력하는 방법이다. 보통 로그에 날짜, 파일명, 메소드명, 라인을 작성하려면 아래와 같이 작성한다. print("\\(Date()) \\(#file.components(separatedBy: "/").last ?? "") \\(#function) \\(#line) 로그 내용") 함수설명 Date() : → 날짜 출력 #file : 파일 출력 → #file만 사용하는 경우에는 파일이 있는 디렉터리가 모두 출력 components(separateBy:)함수를 사용 .last → 마지막 위치 #fuction 현재 메소드명 #line 현재 라인 출력 위와같이 작성하면 콘솔창에 이렇게 출력된다. 출력결과 #file만 사용 하는 경우 2020-10-11 16:31:33 +0000 .. 2022. 3. 18.
error - Extensions must not contain stored properties 이슈 발견 보고서 📌 발견일 / 해결일 22.03.10 📌 이슈사진 📌 상황설명 extension에 깔끔하게 정리하고자 관련 변수를 같은 위치에 선언했더니 발생했다. 📌 Solution extension에는 저장프로퍼티를 넣을 수없고 연산프로퍼티만 사용가능함 변수 선언부에 따로 설정하거나, extension에 꼭 넣어야한다면 연산프로퍼티로 선언할것 참고 → https://zeddios.tistory.com/263 2022. 3. 13.
앱의 다크모드를 바꾸는 여러가지 방법 📌 개념 IOS13 부터 다크모드가 도입되었습니다. 앱전체를 시스템설정에 따라 다크모드로 적용하는 것이라면 별 이슈가 없겠지만 아래와 같은 경우가 있을 수 있습니다. 일부만 다크모드를 적용하는 경우 앱 내부 설정에서 다크모드 변경을 제공하는 경우 [Common Property] OverrideUserInterfaceStyle → 사용자인터페이스스타일 재정의 Apple Document https://developer.apple.com/documentation/uikit/uiview/3238086-overrideuserinterfacestyle var overrideUserInterfaceStyle: UIUserInterfaceStyle { get set } Discussion Use this propert.. 2022. 3. 9.
Progress Bar progress bar는 앱에서 로딩을 할때 자주 보여주는 UI Component이다. 위처럼 웹 브라우저 상단의 로딩을 보여주기도 하고 이런 다양한 로딩의 시각적 요소로 사용할 수있다. 세팅에서 가장 중요한 것은 두가지 이다. 먼저 프로그래스바를 변수지정하고 @IBOutlet progressBar: UIView! progressBar.progress progressBar.SetProgress 아래 위치한 progress 그리고 setProgress이다. progress는 최초값을 지정해주는 역할 setProgress는 갱신할 현재값을 지정해주는 역할을 한다. 그외에도 tintColor를 결정하는 progressTintColor: UIColor? 프로그래스의 배경색을 결정하는 trackTintColor:.. 2022. 2. 16.