Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 리펙토링
- 리팩토링
- MVVM
- Observable
- 리펙터링
- 클린 코드
- uiscrollview
- ios
- combine
- 스위프트
- uitableview
- HIG
- 애니메이션
- swift documentation
- RxCocoa
- Protocol
- Clean Code
- map
- ribs
- UITextView
- UICollectionView
- Human interface guide
- Refactoring
- clean architecture
- tableView
- collectionview
- Xcode
- rxswift
- swiftUI
- SWIFT
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] UIImage의 size 주의사항(scale, UIScreen.main.scale, scale factor) 본문
iOS 응용 (swift)
[iOS - swift] UIImage의 size 주의사항(scale, UIScreen.main.scale, scale factor)
jake-kim 2024. 4. 15. 01:34사전지식) 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, 3x는 600*600이지만 UIImage 인스턴스에서 size는 무조건 200*200으로 고정
- 디바이스의 해상도가 iPhone SE같은 경우 2x이고, iPhoen 15Pro는 3x이지만 모두 image.size 값은 200*200으로 출력
- 즉, UIImage의 size는 실제 이미지의 해상도가 아닌 1x에서의 해상도를 가져오는 것
간단한 해결 방법 - cgImage 사용하기
- UIImage를 cgImage로 변환한 후 width와 height값을 구하면 자동으로 scale을 반영한 값을 가져오므로 아래처럼 사용할 것
private let image = UIImage(named: <#T##String#>)
let cgImage = image?.cgImage
print(cgImage?.width, cgImage?.height)
'iOS 응용 (swift)' 카테고리의 다른 글
Comments