일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tableView
- 스위프트
- MVVM
- Clean Code
- 리펙토링
- Xcode
- 리팩토링
- 애니메이션
- clean architecture
- rxswift
- UICollectionView
- collectionview
- Refactoring
- UITextView
- Observable
- uitableview
- 리펙터링
- HIG
- map
- SWIFT
- Human interface guide
- RxCocoa
- ribs
- ios
- uiscrollview
- swift documentation
- Protocol
- swiftUI
- 클린 코드
- combine
- Today
- Total
목록ios (1094)
김종권의 iOS 앱 개발 알아가기
UITableViewCell의 pressed 효과기대하는 pressed 효과 (이 화면은 pressed 효과를 직접 구현한 화면)UIButton의 highlighted 효과처럼 동작 하지만 위처럼 동작하려면 별도 구현이 필요하고, 디폴트는 이렇게 동작됨단, selectionStyle = .none으로 한 상태코드)class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { let tableView = UITableView() override func viewDidLoad() { super.viewDidLoad() tableView.frame = view.bounds..
원 안에 테두리가 있는 UI원 안에 테두리가 있는 아래 UI를 구현하는 방법?보통은 Circle()을 선언하고 여기에 oberlay를 사용하여 stroke로 위에 뷰를 덫붙여서 구현struct ContentView: View { let lineWidth = 1.0 let length = 40.0 var body: some View { VStack { Circle() // 첫 번째 circle .stroke(Color(UIColor.clear), lineWidth: lineWidth) .background(Color(UIColor.lightGray)) .frame(widt..
디스플레이 확대/축소 옵션아이폰에서 Text의 크기도 동적으로 변하지만 Text가 아닌 디스플레이 자체를 확대하고 축소할 수 있는 옵션이 존재위치: 설정 > 디스플레이 및 밝기 > 디스플레이 확대/축소디스플레이 확대/축소 기능디스플레이의 해상도의 비율은 UIScreen.main.scale로 알 수 있지만, 확대/축소했을때의 해상도는 UIScreen.main.nativeScale로 파악이 가능ex) 디스플레이 확대/축소에서 기본으로 둔 경우확대 옵션으로 킨 경우결과)비교)기본확대확대하면 비율이 0.65625%p 증가되었으므로 약 22%가 증가됨때문에 이 확대된 해상도를 고려하여 애니메이션이나 특정한 크기에 관한 대응이 필요한 경우 scale을 nativeScale로 나눈 비율 값을 곱하여 대응이 가능전체..
우선순위 처리 방법보통 OS에서 왼쪽 상단에서 시작하여 오른쪽을 읽고 아래로 순차적으로 읽어줌지구본의 이미지 -> Hello, world! -> toggle buttonex)Hello, world!가 가장 중요할 때, Hello, world!를 가장 먼저 읽히게 하고 싶은 경우?해당 뷰에 accessibilitySortPriority를 높게 설정하기 (값이 높을수록 가장 먼저 읽힘)따로 이 값을 설정 안하면 디폴트 값은 0ex) "Hello, world!" 뷰를 accessibilitySortPriority를 1로 설정struct ContentView: View { @State private var toggle = true var body: some View { VStack..
뷰를 버튼처럼 만드는 방법일반 SwiftUI의 버튼은 Button(action:label:)형태이며, presssed color는 label부분이 투명해지는 효과가 디폴트로 들어간 상태(코드)struct ContentView: View { @State private var isPressed = false @State private var isChecked = false var body: some View { VStack { normalButton } } @ViewBuilder private var normalButton: some View { Button(action: { isChe..
SwiftUI에서 애니메이션 적용 시 겪는 것뷰에다가 transition을 적용하려고해도 애니메이션이 걸리지 않음transition을 매번 적용하고 싶은데 매번 동작하지 않음(위와 관련된 개념들을 아래에서 알아볼 예정)샘플 코드 준비) 버튼을 누르면 카운트가 올라가는 뷰아직 애니메이션 적용 ximport SwiftUIstruct ContentView: View { var body: some View { VStack { Text("count: \(cnt)") Button("refresh") { cnt += 1 } } .padding() }}#Preview..
진동 효과 (CoreHaptics)햅틱을 0.5초 주기로 1초 진동을 3번 순차적으로 주고 싶은 경우? -> CoreHaptics를 사용단순히 한 두번의 햅틱 반응을 주고 싶은 경우는 UIImpactFeedbackGenerator, UINotificationFeedbackGenerator 글 참고AudioToolbox라는 것을 사용하여 진동 효과를 줄 수 있는데, CoreHaptics가 가장 정교하게 진동 세팅이 가능CoreHapcits는 iOS 13부터 제공하며 햅틱의 패턴들을 정교하게 만들어 낼 수 있는 기능사용 방법importimport CoreHapticsenum을 사용하여 햅틱의 종류 설정enum HapticCategory { case a case b}a진동은 여러번 주는 진동으로하고..
DispatchQueue 작업 취소, 예약 방법5초 후에 특정 작업을 수행하고 싶은 경우?보통은 DispatchQueue 사용DispatchQueue.main.asyncAfter(deadline: .now() + 5) { // some task...}5초 후에 특정 작업을 수행하려고 하지만, 중간에 버튼을 누르면 이 작업을 취소하고 싶은 경우?DispatchSourceTimer 사용DispatchSourceTimer 개념타이머를 설정해놓고 특정 작업을 setEventHandler 클로저로 실행시킬 수 있는 기능이것을 사용하면 작업을 등록해놓고 cancel, pause 모두 다 가능DispatchSourceTimer 사용 방법인스턴스 하나를 두고 cancel(), pause()할 수 있도록 전역으로 ..