일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Clean Code
- swiftUI
- Refactoring
- 클린 코드
- Protocol
- MVVM
- ribs
- Observable
- Xcode
- swift documentation
- ios
- SWIFT
- UITextView
- clean architecture
- 리펙토링
- 스위프트
- map
- rxswift
- Human interface guide
- uiscrollview
- combine
- collectionview
- 애니메이션
- 리팩토링
- HIG
- tableView
- 리펙터링
- RxCocoa
- UICollectionView
- uitableview
- Today
- Total
목록uiimage (7)
김종권의 iOS 앱 개발 알아가기
사전지식) scale factor 개념 scale factor란 pixcel을 표현할 때 더 높은 픽셀 밀도를 표현하기 위한 값 @1x는 1배의 픽셀 밀도 @2x는 2배의 픽셀 밀도 @3x는 3배의 픽셀 밀도 ex) Assets.xcassets 파일의 한 이미지 파일 UIImage의 size 주의사항 UIImage 인스턴스에서 size 프로퍼티를 사용할 수 있는데, 여기서의 size는 위에서 1x, 2x, 3x 중에 어떤 사이즈가 출력될까? let iamge = UIImage(named: "myImage") print(image.size) // CGSize(width: 200, height: 200) 정답은 1x기준의 해상도 값이 출력됨 이미지의 실제 해상도는 1x의 해상도가 200*200이라면, 2x는..
UIImage에서 Data로 변환에서의 주의사항 UIImage를 서버로 올리거나 데이터 교환을 할 때 Data형태로 변환해야할때가 있는데 이 때 alpha값(투명도)이 제거되는 jpegData로 쓸 것인지, pngData로 쓸 것인지 판단이 필요 (반대로 Data에서 UIImage로 변환할때는 Data의 bit를 확인하여 jpg인지 png인지 판단이 가능) 방안: UIImage를 Data로 변경할 때 alpha정보를 파악하여 jpegData를 사용할지 pngData를 사용할지 선택하여 사용 UIImage에서 alpha 정보 아는 방법 - alphaInfo alphaInfo란 CGImage의 프로퍼티인데 이 정보를 사용하면 alpha값이 있는지 유무 판단이 가능 alphaInfo는 enum으로 구현된 것..
* iOS 메모리 기초 개념은 Memory Deep Dive 포스팅 글 참고 기본 지식) 이미지의 중요한 요소 - 해상도 이미지를 다룰때 중요한 것은 파일의 크기(volume)가 아닌 이미지의 크기(resolution)이라는 점을 알 것 이미지를 구성하고 있는 pixcel관점에서, 1pixel을 이룰 때 RGB요소에 의해 각 1byte씩 3개가 필요하므로 3byte가 필요 여기에다 alpha 채널까지 합하면 1pixel당 4byte가 필요 만약 크기가 2048px * 1536px 의 이미지 파일 크기가 590KB가 디스크에 있을 때, 이 파일을 뷰에 표현할때는 약 10mb가 필요 (2048px * 1536px * 4byte) UIImage 관리 - 이미지를 메모리에 잡고 있지 말 것 UIImage는 위에..
UIView에 extension으로 asImage()추가 UIGraphicsImageRenderer(bounds:)의미: Core Graphics 지원 이미지를 만들기 위한 그래픽 렌더러 UIView의 layer.render(in:)에서 렌더러 context를 넣으면 기존 UIView가 UIImage로 변환 extension UIView { func asImage() -> UIImage { let renderer = UIGraphicsImageRenderer(bounds: bounds) return renderer.image { rendererContext in layer.render(in: rendererContext.cgContext) } } } image처럼 사용 class ViewControlle..
UIGrahpicsBeginImageContext란 bitmap image context를 생성하는 함수: 그림을 그려서 UIImage로 저장하는 것 context란? 코어 이미지의 모든 프로세싱은 CIContext내에서 수행: 렌더링 과정과 렌더링에 필요한 리소스를 더 정밀하게 컨트롤 할수 있게 해주는 객체 iOS 4.0 이전부터 지원했던 함수이며 scale = 1.0으로 bitmap image context를 만들어 주는것 (retina 디스플레이에서 선명하지 않을 수 있는 단점) UIGraphicsBeginImageContextWithOptions란 iOS 4.0+ 지원하는 함수이며 scale 값을 지정할 수 있어서 retina 디스플레이에 장점 인수 - size: bitmap context 사이즈..
enum처럼 .type으로 접근하여 사용할 수 있도록 구현 UIImage를 extension하여 내부에 computed property, static var로 구현 extension UIImage { static var floatingButton: UIImage { return UIImage(named: "plus")! } static var photo: UIImage { return UIImage(systemName: "photo")! } static var cameraRotate: UIImage { return UIImage(systemName: "camera.rotate")! } static var boltFill: UIImage { return UIImage(systemName: "bolt.fil..
UIGraphicsEndImageContext사용 UIImageView을 extension하여 구현 func createImageWithLabelOverlay(text: String, isFromCamera: Bool = false) -> UIImage? { let imageSize = self.image?.size ?? .zero UIGraphicsBeginImageContextWithOptions(CGSize(width: imageSize.width, height: imageSize.height), false, 1.0) let currentView = UIView(frame: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height)) ..