본문 바로가기
728x90
반응형

전체 글85

[Swift] frame과 bounds 들어가기에 앞서서 이런 뷰가 공통적으로 있다고 가정할께요?frame위는 공식문서에 있는 내용입니다.간단히 해석해보면해당뷰의 Superview의 좌표계에서 위치와 크기이다.이게 뭔말이냐 할 수 있는데요,내가 선택한(.frame으로 접근한) 뷰의 Superview(부모뷰)안에서의 위치와 크기를 나타낸다.고 이해하심 됩니다.그래서 좌표를 찍어보면 슈퍼뷰에서의 상대 위치로 위치가 찍힙니다.(아무튼 위치가 찍힌다는 말이죠)또한 뷰의 크기를 계산하는것도 특이한데요,크기를 정하는 영역은 항상 슈퍼뷰 안에서 직사각형 형태로 존재하기때문에 뷰가 돌아가도 공백을 다 포함한 너비를 구하려고 합니다. 한번 직접 볼까요?묘하게 점선도 돌아간것 같지만 실제론 안에있는 빨간색 사각형만 돌아가있다는... bounds위 내용도 공식 .. 2024. 10. 19.
[CS] final, static, class(feat.Swift) 이번 시간에는 제일 헷갈릴수 있는 세가지를 알아봅시다.간단요약static과 class는 메서드나 프로퍼티를 인스턴스화 하지 않고 하나만 존재하도록 하기 위해 사용한다.이 말인 즉슨 타입 프로퍼티, 타입 메서드로 만들어 버린다는 뜻.또한 static은 상속을 막을때도 쓴다.finalfinal은 딱봐도 느낌이 오죠? 끝! 이라는 느낌이 오실텐데요,final은 오버라이딩을 막기위해 사용됩니다.오버라이딩이란?인스턴스 메서드, 인스턴스 프로퍼티, 타입 메서드, 타입 프로퍼티, 서브스크립트의 재정의를 막는것입니다.잘 모르겠으면 아래 보시면 바로 아실거에요override func viewDidLoad() { super.viewDidLoad() }이거 보시면 아시.. 2024. 10. 19.
[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.
728x90
반응형