일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- swift custom ui
- swift navigationcontroller
- button configuration
- traits
- swift bottomsheet
- UIKit
- rxdatasources
- Tuist
- SWIFT
- swift 점선
- 타임라인 포맷팅
- claen architecture
- scene delegate
- uikit toast
- task cancel
- identifiable
- reactorkit
- 버튼 피드백
- swift 백준
- domain data
- swift dashed line
- custombottomsheet
- RxSwift
- BFS
- coordinator
- DP
- custom ui
- swift concurrency
- custom navigation bar
- task cancellation
- Today
- Total
목록UIKit (8)
김경록의 앱 개발 여정
📢 cornerRadius란?cornerRadius는 iOS의 모든 UIView가 갖고 있는 CALayer의 속성 중 하나로, 뷰의 모서리를 둥글게 만들어줍니다. 숫자로 지정한 반지름(radius)만큼 모서리가 잘려 둥근 사각형 형태로 렌더링되죠. 예를 들어, 버튼이나 카드 뷰에 부드러운 곡선을 주고 싶을 때 유용합니다.let roundedImageView: UIImageView = { let imageView = UIImageView() imageView.backgroundColor = .systemBlue imageView.layer.cornerRadius = 12 // 모서리를 12pt 만큼 둥글게 imageView.clipsToBounds = true // 내부 콘텐츠가 ..
🔊 개요앱을 만들 때 Button은 필수적이고, 자동으로 터치 피드백을 제공합니다.(눌렸을 때 색깔이 바뀐다던가)하지만 종종 버튼을 눌렀을 때 아무런 반응이 없는 것처럼 보이는 문제를 겪게 되죠.그럴 땐 대부분 아래 이유 중 하나입니다.👇 1. AttributedString에서 색상을 직접 지정한 경우(configuraton 사용 시)configuration 사용 시 폰트를 지정할 때 AttriibutedString을 사용하게 됩니다.그때 foregroundColor 또한 지정이 가능하며 이것으로 글자색을 바꿀 수도 있습니다. let attributedTitle = AttributedString( "이미지", attributes: AttributeContainer([ .font..

이번에 다룰 커스텀 UI는 위와 같은 스타일입니다.단순한 버튼처럼 보이지만, 자세히 보면 테두리가 점선으로 되어 있는 걸 알 수 있습니다.UIKit에서 기본 제공하는 borderStyle 옵션은 다음과 같습니다:.none.line.bezel.roundedRect하지만 이 중 어떤 것도 점선 테두리는 지원하지 않죠.(제가 모르는걸 수도..?ㅎㅎ..)물론 UIView를 하나 덧씌워서 해결할 수 있을까도 고민했지만,문제는 단순한 overlay가 아니라 ‘점선’ 그 자체였습니다.결국 선택지는 하나.CAShapeLayer와 UIBezierPath를 이용해 직접 그리는 방식으로 가야 했습니다.이번 포스팅에서는 실전 예제와 함께,점선 테두리를 가진 UIButton을 만드는 방법을 정리해 보겠습니다.🧱 기본 버튼 스..

✅ 두 가지 스타일의 내비게이션 바 사용현재 프로젝트에선 다음과 같은 구조로 내비게이션 바 스타일이 나뉩니다:루트(첫 번째) 화면 → 로고 및 아이콘을 포함한 커스텀 스타일그 이후 푸시된 화면들 → 시스템 스타일 기반의 일반 네비게이션 바🎛 커스텀 네비게이션 컨트롤러에서 공통 처리이미 앱 전반에서 사용되는 커스텀 내비게이션 컨트롤러(InteractivePoppableNavigationController)가 존재하므로, 여기에 스타일 설정을 통합합니다.SceneDelegate 또는 AppDelegate에서 내비게이션 컨트롤러를 초기화할 수 있습니다:// SceneDelegatefunc scene(_ scene: UIScene, willConnectTo session: UISceneSession, opti..

일반적인 방식일반적인 방식으로 버튼 정의 시 기본적으로 콘텐츠 사이즈에 한해 터치영역을 제공 let testButton: UIButton = { let button = UIButton(type: .system) button.setTitle("Test", for: .normal) button.backgroundColor = .green return button }() 테스트 예시로 button.BackgroundColor를 변경한 모습별도의 너비를 주지않을 경우 내부 Text나 Image에 따라서 터치 영역을 딱 맞게 자동으로 제공함 Button Configration 사용 시 모습 이미지 + 텍스트를 사용해야할때 button..

개요 한창 열심히 운동할 때 애용했던 앱이 있습니다.BurnFit이라는 앱인데요, 해당 앱은 위 이미지처럼 유료 요금제를 사용하는 유저에게만 제공하는 화면이 있었습니다.이 화면은 하나의 UICollectionView로 구성되어 있을 것으로 예상되는데, 유저의 상태에 따라 다른 콘텐츠를 보여주는 구조입니다. 저도 최근 팀 프로젝트를 진행하며 비슷한 기능을 구현해야 했습니다.디자인 시안에 따르면, 카테고리 선택 여부에 따라 보이는 화면이 달라져야 했습니다.저희 앱은 기본적으로 회원가입 없이 사용할 수 있지만, 글쓰기와 같이 특정 화면 및 기능은 회원만 접근 가능하도록 제한하고 있었습니다. 이번 글에서는 해당 기능을 구현하며 겪었던 고민과 해결 과정을 공유해보려 합니다.참고: 아래 예제 코드에서는 가독성을 ..

코디네이터 패턴을 학습하고 구현하는 과정에서 여러 시행착오를 겪었다.그 중에서도 특히 present와 dismiss의 주체가 누구인지에 대해 고민했다.내가 구현한 코디네이터 프로토콜은 아래와 같이 navigationController를 가지고 있었는데,import UIKit public protocol Coordinator: AnyObject { var parentCoordinator: Coordinator? { get set } var childCoordinators: \[Coordinator\] { get set } //이거 var navigationController: UINavigationController { get set } func start()..
UIKit에서 버튼을 사용하면서 이미지와 텍스트 사이의 inset을 넣어야 했습니다. imageEdgeInsets을 사용하려 했는데 꽤 오래전에 deprecated 됐었네요 iOS 15 이후론 새로운 UIButton System이 추가되었다고 합니다. WWDC에서 새로운 시스템은 다음과 같은 효과가 있다고 합니다.유연한 디자인: 이미지, 텍스트, 배경 색상 등을 자유롭게 조합하여 다양한 스타일의 버튼을 만들 수 있습니다.동적 업데이트: 버튼의 상태에 따라 동적으로 스타일을 변경할 수 있습니다.접근성 향상: Dynamic Type을 지원하여 시각 장애가 있는 사용자에게도 편리한 사용 환경을 제공합니다. configuration을 통해 동적인 동작을 정의하고, 토글, 팝업등의 버튼을 제공하는 방법 등 영상에..