본문 바로가기

iOS

(6)
SwiftUI에서 각각 다른 모서리에 cornerRadius 주는 법 Custom RoundedCorner각 모서리에 다른 반경을 적용할 수 있는 커스텀 Shape 정의struct RoundedCorner: Shape { var radius: CGFloat = .infinity var corners: UIRectCorner = .allCorners func path(in rect: CGRect) -> Path { let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) return Path(path.cgPath) }}Shape란?SwiftUI에서 custom 2d 도..
computed property로 코드 예쁘게 적는 법 Computed property란?클래스, 구조체 또는 열거형 내에서 정의되는 프로퍼티의 한 유형이다.이 프로퍼티는 값을 직접 저장하지 않고, 대신 호출될 때마다 특정 연산을 수행하여 값을 계산해서 제공한다.쉽게 말해 저장 프로퍼티에 의존하거나 다른 계산을 통해 동적으로 값을 결정해준다.keypath 표현식(\)이란?\는 키 경로(Key Path)를 나타내는 표기법이다.키 경로는 객체의 특정 프로퍼티로의 접근 경로를 나타내고 데이터 바인딩이나 값 관찰, 컬렉션의 요소등을 다룰 때 유용하게 사용된다.type safe한 방식으로 객체의 프로퍼티에 접근할 수 있다.struct Person { var name: String}let person = Person(name: "John")let keyPath =..
navigator area 폴더가 파란색으로 바뀐 후 xcode 내에서 파일 인식을 못하던 이슈 이슈 내배캠 최종 프로젝트를 하던 중 pbxproj 파일 충돌 해결 이후 분명 xcode 내에서 파일과 코드가 살아있는데 PobitNavigationBar를 참참조하려 했을 때 인식하지 못하던 이슈가 있었다. 특이사항은 이렇게 NaviBar 폴더만 파란 색으로 변했던 것인데.. 구글링을 해보면 추적이 되지 않는 폴더는 파란색으로 뜬다고 한다. 해결법 코드를 복붙으로 백업시켜놓고 같은 이름으로 추가하면 또 구조가 꼬일 수 있다고 하셔서 새 폴더를 다시 만든 후 새로운 파일을 새로운 이름으로 만들어 해결했다. 튜터님에 따르면 엑스코드는 논리그룹(이건 나중에 더 찾아봐야함)이기 때문에 논리관계가 다르면 이렇게 인식을 못하는 경우가 생긴다고 한다. 보통 이런 경우는 타겟 멤버쉽에서 인식을 잘 못하거나 locat..
[Refactor] DiaryViewControllerFactory() 생성 도입이유 DiaryViewController를 상속받는 일기 작성 뷰 컨트롤러들의 생성 메서드들이 각 클래스의 익스텐션에 들어있어서 너무 파편화되었다는 생각이 들었다. 해결책으로 DiaryViewControllerFactory() 클래스를 하나 새로 파서 만들어주기로 했다. 그리고 swiftApiDedignGuides에 따르면 팩토리 메서드 패턴에서 메서드의 네이밍은 make를 권장하고 있다. createWithDiaryView에서 ViewController를 반환하니 makeViewController()로 변경하기로 했다. ⛑️ 에러 발생 깔끔해지긴 했는데.. 에러파티네 Instance member 'diaryViewFactory' cannot be used on type 'DiaryViewContro..
피시테일 파카와 인이어를 통해 알아보는 아키텍처 공부의 필요성 아키텍처, 왜 공부해야할까요?아키텍처 적용의 장점에 대해 찾아보면 테스트 용이성, 의존성, 강한 결합 정말 많은 키워드가 나오는데요, 저는 처음 아키텍처를 공부했을 때 이런 키워드들이 정말 잘 와닿지 않았습니다. 보통 스토리보드에서 코드베이스로 넘어오면 viewController에서만 대부분의 작업을 하게되는것 같아요. 이런 방식은 간단하게 구현이 가능하다는 장점이 있지만 복잡한 뷰를 비효율적으로 짠다면 코드 양이 늘고, 디버깅을 하기도 어렵습니다. 저 또한 첫 프로젝트를 올리브영 앱을 클론코딩 했는데.. 뷰 컨트롤러 클래스가 천줄이 나오더라구요.. 하하 저는 이번 포스팅에서 우리가 일상생활에서 접할 수 있는 예시들을 활용하여 아키텍처 공부의 필요성에 대해 설명해보려고 합니다!강한 결합.. 왜 문제일까요..
UINavigationBar 커스텀 * Sopt 32기 앱잼을 하며 노션에 작성한 트러블 슈팅을 옮겨온 글입니다. 네비바 커스텀 장점 뷰 계층구조 자동 관리 앱 내에서 통일된 내비게이션 스타일을 유지하기 용이 화면 회전 및 다양한 디바이스 크기에 쉽게 대응 원래는 **UIView**에 컴포넌트를 올리는 방식으로 네비바 커스텀을 진행했었는데요, 이러한 장점이 있다는 것을 알게 된 후 기존 **UIView**에 컴포넌트를 올리는 방식이 아닌 **UINavigationBar**을 커스텀하는 방식으로 전환하게 되었습니다. 그러나 예상보다 커스텀이 가능한 범위가 제한되어 있었고, 특히 네비바의 높이를 조정하는 과정에서 네비바가 view를 가리는 이슈가 발생했습니다. import UIKit final class PophoryNavigationCont..