본문 바로가기
728x90
반응형

전체 글83

[UIKit] navigationbar 숨기기와 보이기 이번시간에는 navigationbar를 자유자재로 각 뷰마다 보이거나 숨기도록 하는 방법을 알아봅시다.깃허브 링크에 들어가보시면 아래앱의 전체 코드가 있습니다.위 이미지에 보시다싶이 제 앱에선 상단의 navigationbar가 항상 존재하지않습니다.메인화면에선 없구요, 항상 어딘가를 들어가야(뎁스가 늘어나야) 존재하게 됩니다.이렇게 navigationbar를 숨기거나 나타내는 방법에는 두가지가 있습니다. setNavigationBarHidden(_:animated:)첫번째 파라미터는 숨김여부 bool,두번째 파라미터는 애니메이션여부 bool입니다.파라미터에서부터 보면 알수있죠?animated를 통해서 애니메이션 여부를 결정할 수 있습니다.사용방법은 아래와 같습니다.func 어떤 메서드() { // 애니메.. 2024. 9. 24.
[Swift] viewWillLayoutSubviews(), viewDidLayoutSubviews() 이 글은 이전의 [Swift] Update Cycle에서 이어집니다.이번에는 UIViewController의 생명주기안에 있는 viewWillLayoutSubviews, viewDidLayoutSubviews에 대해 알아보고자 합니다. 제가 이걸 알고 찾아보게 된 게 커스텀 세그먼트를 만들고 다크모드에 대응하면서부터였는데요,커스텀 세그먼트를 만들 때 그냥 만들었는데 다크모드를 갔다 오니까 제가 만든 세그먼트가 아래처럼 작동하더라고요?뭔가 값이 초기화된 건가? 해서 무작정 챗지피티한테 물어보니 다음과 같은 답변을 주더라는 겁니다.다크모드와 라이트모드를 왔다 갔다 할 때 뷰가 다시 렌더링 된다고 하더라고요.이 친구는 저기있는 `viewDidLayoutSubviews()`를 쓰라고 하더라고요.그래서 찾다보니 .. 2024. 9. 23.
[Swift] Update Cycle 이번에는 생명주기와는 또 다른 Update Cycle에 대해 알아보고자 합니다.(굳이 번역하면 갱신주기정도로 말할 수 있겠네요.) 제가 이걸 알고 찾아보게 된 게 커스텀 세그먼트를 만들고 다크모드에 대응하면서부터였는데요,커스텀 세그먼트를 만들 때 그냥 만들었는데 다크모드를 갔다 오니까 커스텀 세그먼트에 버그가 생기더라구요,암튼 이 얘기는 나중에 더 쓰도록 하구요,결과부터 얘기하면 gpt에서는 `viewDidLayoutSubviews()`를 쓰라고 하더라고요.저 메소드에 대해 찾아보면서 그와 유사하지만 별개로 새로 알게 된 내용들을 정리해봤습니다. Main Run LoopviewDidLayoutSubviews 메서드는 layoutSubviews가 끝난뒤에 실행된다고 하더라구요,여기서 layoutSubvie.. 2024. 9. 22.
[UIKit] 다크모드, 라이트 모드 고정 이번에는 다크모드나 라이트 모드에 고정하는 방법을 알아보고자 합니다. 우리가 앱을 만들다보면 앱의 테마를 위해다크모드나 라이트 모드로 고정해야 하는 상황이 생길수도 있습니다. 그쵸? 저만 그런거아니죠? 예시코드UIKit에서는 간단한 방법으로 고정 할 수 있는데요, 바로 SceneDelegate를 이용하면 됩니다.아래는 예시 코드입니다.window.overrideUserInterfaceStyle = .light // 다크모드는 .dark어때요, 간단하죠? 전체 예시이 한줄의 코드를 `scene(_:willConnectTo:options:)`안에 적어주면 됩니다.func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connec.. 2024. 9. 1.
[UIKit] UITextView placeholder 이번에는 UITextView의 placeholder를 구현하는 방법을 알아봅시다! 우리가 일반적으로 이메일, 비밀번호, 이름, 전화번호 등등 각종 정보들을 위주로길어도 한줄씩만 적는 칸을 만들때 쓰는게 UITextField입니다. UITextField의 PlaceholderUITextField는 placeholder를 다음과 같이 쓸 수 있죠.var uiTextField: UITextField = { let view = UITextField() view.placeholder = "플레이스 홀더를 이렇게 설정" view.translatesAutoresizingMaskIntoConstraints = false return view}()그럼 아래와 같이 될겁니다. 반면에일기라던가, 메모처.. 2024. 8. 13.
[UIKit] 코드베이스로 프로젝트 만들기 uikit으로 프로젝트를 만드는 방법은 두가지가 있는데요,첫번째는 그냥 스토리보드를 써서 GUI환경에서 그냥 드래그앤드랍으로 만드는법.두번째는 스토리보드 없이 코드로 요소들을 구현하는 방법. 첫번째꺼는 알려드릴 필요가 없이 프로젝트 생성할때 스토리보드를 사용해서 만들면 그냥 생기니까 하면되구요,이번시간엔 두번째방법인 코드로만 프로젝트를 생성하는 방법에 대해 알아보고자 합니다.대략적인 흐름을 말씀드리자면원래는 Main 스토리보드가 존재하고 그 친구가 앱의 시작이잖아요?(런치스크린 빼고)UI를 코드로 작성해버리니까 더이상 스토리보드가 필요없어지니까Main 스토리보드를 지우면서 해당 내용이 써있던 부분들을 전부 지워주고앱의 진입점을 ViewController로 만들어주는 작업입니다.후에 ViewControll.. 2024. 8. 5.
728x90
반응형