일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- Xcode
- collectionview
- map
- Human interface guide
- ribs
- UITextView
- 리펙터링
- uitableview
- HIG
- Refactoring
- swift documentation
- ios
- 애니메이션
- UICollectionView
- RxCocoa
- MVVM
- SWIFT
- Clean Code
- uiscrollview
- Observable
- 클린 코드
- 리팩토링
- 리펙토링
- combine
- clean architecture
- 스위프트
- rxswift
- tableView
- swiftUI
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bXFRRY/btsvbFsMGOe/usB42KDmxAZkF5PyrqI7WK/img.png)
UIImage 이미지 리사이징 * 참고한 코드: https://stackoverflow.com/questions/31314412/how-to-resize-image-in-swift 이미지 리사이징를 하고 싶은 경우, UIImage에서 해상도를 낮추어 리사이징 하는 방법 extension UIImage { func resizeImage(targetSize: CGSize) -> UIImage { let size = self.size let widthRatio = targetSize.width / size.width let heightRatio = targetSize.height / size.height var newSize: CGSize if widthRatio > heightRatio { newSize =..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c3g8w4/btsvdszOfzO/5ppdE0DrAi240IWSG4yRvK/img.png)
LaunchScreen과 Splash 구분하기 LaunchScreen: 앱이 Launching되는 동안 표시되는 화면 Splash: 런치스크린과 비슷해보이지만, Splash에서는 로고나 애니메이션이 들어가는것이 목표가 아니며 애플에서는 빠르게 시작하고 즉각 사용할 수 있는 경험을 주는 것 주의할 점 Splash 화면에서 가끔 로고와 애니메이션을 넣는 잘못된 UX를 넣는데, 이것보다 더 중요한 것은 사용자에게 빠르고 즉각 앱을 사용할 수 있다는 느낌을 주는 것 ex) 애플의 safari를 실행시키면 아래처럼 Launch screen, Splash에 모두 좌측 사진 Launch screen과 Splash 둘 다 좌측하면이고 Splash에서 toolbar가 노출되며 바로 앱을 사용할 수 있는 인식을 부여 la..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/s6Dyn/btsuOf13xbV/F4ZqJJOXTsFHjzCCBzNU90/img.gif)
1. 붙여넣기 글자 제한 UITextView 처리, 커서 이동 처리 방법 - 단순 텍스트 2. 붙여넣기 글자 제한 UITextView 처리, 커서 이동 처리 방법 - UTF16 (이모지를 고려한 처리) 3. 붙여넣기 글자 제한 UITextView 처리, 커서 이동 처리 방법 - isScrollEnabled=false인 상태에서 커서 위치로 스크롤링 방법(#caretRect(for:), #scrollToCursor) 문자열 처리 시 주의사항 UTF16를 사용하고 있으므로 🇰🇷 이모지의 크기는 4이며, 1이 아닌 것에 주의 "some string".count의 값은 단순히 글자 수이며, shouldChangeTextIn에서 현재 포커스를 구할 때 NSRange를 사용하는데 이 값 기준은 UTF16으로 글자의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rW4l3/btsugl2vLZ7/PFZuH2giErC9SLGIbxFlKk/img.png)
Xcode15 북마크 기능 Xcode15에서 3번째 탭을 보면 Bookmarks라는 탭이 탄생 (Xcod14 이하에서는 3번째 탭이 파일 구조, class, method, proprety로 표현) 북마크 기능 활용 코드 부분 선택 > 오른쪽 마우스 클릭 > Bookmark "ViewController.swift" Line 26 클릭 추가하면 추가되었다는 메세지가 뜨고 오른쪽에 북마크 표시가 표출 오른쪽에 북마크 표출 북마크를 누르고 이름을 입력하고 enter 네비게이터 3번째 탭을 보면 방금 추가한 북마크가 있고, 이 북마크를 탭하면 해당 코드 부분으로 에디터가 이동
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/73sfe/btst7vY8k6l/wUNuGMrGlEXhM67AoaGz20/img.png)
UIButton.Configuration 개념 iOS 15+ 버튼들을 유형별로 일관성 있는 방식으로 손쉽게 사용할 수 있게하기 위함 UIButton.Configuration 사용 방법 UIButton.Configuration 객체를 만들고, 이 객체로 UIButton을 초기화 하는 방식 var config = UIButton.Configuration.plain() config.title = "\(i) button " + "(" + names[i] + ")" config.subtitle = "subtitle" let button = UIButton(configuration: config) 컴포넌트화 할 때, Configuration과 UI 자체를 코드로 분리하여 사용하는쪽에서 일관성있고 사용하기 편리하게 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjxpNa/btsugjvRJcC/O3wdbWKte7g7mZj8OIiWik/img.png)
isSymbolAnimationEnabled 개념 iOS 17+ (beta) 부터 심볼 이펙트 애니메이션이 등장 심볼 이펙트 애니메이션이란? 버튼같은경우 탭 했을때 버튼이 작아졌다가 커지는 애니메이션이 시스템에서 제공 기존에는 버튼을 눌렀을 때 highlighted 컬러만 들어갔다면, 버튼의 크기가 변경되는 애니메이션 주의) SF symbol 이미지만 적용 가능 SF symbol 관련 개념은 이전 포스팅 글 참고 심볼 애니메이션 설정 방법 isSymbolAnimationEnabled = true로 설정 (UIButton의 isSymbolAnimationEnabled 디폴트값은 false) let button = UIButton() button.setImage(UIImage(systemName: "plus..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4Danz/btstSk2VNRD/6YAJaSlUVrExcQu7IgcXvk/img.gif)
1. 붙여넣기 글자 제한 UITextView 처리, 커서 이동 처리 방법 - 단순 텍스트 2. 붙여넣기 글자 제한 UITextView 처리, 커서 이동 처리 방법 - UTF16 (이모지를 고려한 처리) 3. 붙여넣기 글자 제한 UITextView 처리, 커서 이동 처리 방법 - isScrollEnabled=false인 상태에서 커서 위치로 스크롤링 방법(#caretRect(for:), #scrollToCursor) 붙여넣기 글자 제한 로직 123과 456 사이에 최대 글자 300을 넘는 문자열을 붙여넣는 경우 요구사항1) 123과 456사이에 붙여넣기 적용, 300자가 넘는 문자열은 뒤에가 잘리도록 처리 요구사항2) 붙여넣기 이후 커서 위치는 붙여넣은 문자열 바로 뒤에 위치 요구사항3) 이미 300자가 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GiER8/btssUaHlTu2/KrwXxGWEZw91MNYe5NF4ZK/img.png)
UIVisualEffectView 개념 블러 효과나 뷰에 생동감을 구현하는 뷰 UIVisualEffectView를 aView에 addSubview하게되면, aView에 효과가 적용되는 원리 ex) 블러효과 UIVisualEffectView를 aView에 addSubview하면 aView에 블러효과가 적용 블러 효과 UIBlurEffect 예제 코드) class ViewController: UIViewController { let backgroundImageView = { let backgroundImageView = UIImageView(image: UIImage(systemName: "circle.fill")) backgroundImageView.contentMode = .scaleAspectFill ..