지도 위에 아이콘을 UIView를 사용하여 뿌리는데 iPhone4에서 제대로 이미지가 적용이 되지 않았다
해당 문제에 대해 기존 코드를 다 분해해본 결과 원인은 위 함수가 문제 였다.
retina디스플레이에 맞는 해상도 스케일이 위 함수에서는 제대로 적용이 안되었던 것 같다.
해당 문제에 대해 서칭해본 결과 아래 블로그를 찾았다.
http://www.waterworld.com.hk/en/blog/uigraphicsbeginimagecontext-and-retina-display
UIGraphicsBeginImageContext 를 retina디스플레이에 제대로 적용하기 위해서는 UIGraphicsBeginImageContextWithOptions 를
사용해야 했고 단말 기기의 버전에 따라 호출 함수를 결정해줘야하는 번거로움이 생겼다.
하지만 문제를 해결했으니 다행이다.
위 블로그의 업데이트 된 내용을 보니 ipad쪽에서 UIScreen의 scale을 불러오는 부분에 문제가 있는것 같아 코드를 수정하였다.
void RetinaAwareUIGraphicsBeginImageContext(CGSize size) {
static CGFloat scale = -1.0;
if (scale<0.0) {
UIScreen *screen = [UIScreen mainScreen];
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {
if( [screen respondsToSelector:@selector(scale)] ){
scale = [screen scale] ;
}else {
scale = 1.0;
}
}
else {
scale = 0.0; // mean use old api
}
}
if (scale>0.0) {
UIGraphicsBeginImageContextWithOptions(size, NO, scale);
}
else {
UIGraphicsBeginImageContext(size);
}
}
'iOS' 카테고리의 다른 글
Xcode4 cocoa touch Header comment Template 수정 (0) | 2011.04.26 |
---|---|
UIAlertView - didDismissWithButtonIndex 이벤트 문제 (0) | 2011.04.11 |
아이폰 아이콘 설정 주의사항 (0) | 2011.03.11 |
아이폰 개발 유용팁 (0) | 2011.03.11 |
테이블 뷰, 버튼에 테두리 및 둥근 모서리 처리 (0) | 2011.03.04 |