일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- UICollectionView
- MVVM
- combine
- Clean Code
- 클린 코드
- 리팩토링
- 리펙토링
- uiscrollview
- swift documentation
- Xcode
- tableView
- rxswift
- RxCocoa
- SWIFT
- map
- Refactoring
- UITextView
- 리펙터링
- Protocol
- uitableview
- HIG
- ios
- ribs
- swiftUI
- 스위프트
- clean architecture
- Human interface guide
- 애니메이션
- collectionview
- Observable
- Today
- Total
목록uiimage (8)
김종권의 iOS 앱 개발 알아가기
CGImage와 UIImage 개념UIImage와 CGImage 모두 이미지에 관한 데이터를 갖고 있는 인터페이스UIImage 데이터가 있으면 CGImage 인스턴스로 변환도 가능private let image = UIImage(named: "tree")!let cgImage = image.cgImageUIImage는 cgImage를 wrapping한 형태이며, UI를 그릴때 더욱 고수준 레벨로 인터페이스를 제공하여 UI 작업에 집중할 수 있게 해놓은 것cgImage는 UI를 그리는 인터페이스 외에도 bits와 같은 저수준 레벨의 세부 데이터 접근을 위해서 있는 것가장 대표적인 예) size 값UIImage의 size 프로퍼티를 사용하면 디바이스의 scale 값을 고려하지 않은 값을 얻어옴x2 스케일을 ..
사전지식) 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는 400*400, 3..
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)) ..