iOS8 AlertView 텍스트 정렬 문제
예전 iOS 앱을 유지보수하다 보면 UIAlertView를 사용한 오래된 코드에서, iOS8 업데이트 후 Alert 메시지 텍스트가 상단에 붙어 보이는 문제를 겪은 적이 있습니다. iOS7에서는 정상 가운데 정렬이었지만, iOS8에서 레이아웃 방식이 변경되면서 발생한 현상입니다.
해결은 매우 단순합니다. AlertView 제목(title)에 nil 대신 빈 문자열("")을 넣으면 텍스트가 다시 정상적으로 중앙 정렬됩니다.
1. 문제 원인
iOS8에서는 UIAlertView 내부 레이아웃이 변경되면서, title이 nil일 경우 message가 타이틀 영역까지 끌어올려지는 레이아웃 버그가 있었습니다.
즉, 다음 코드처럼 title을 nil로 지정하면 문제가 발생합니다:
UIAlertView *alertView =
[[UIAlertView alloc] initWithTitle:nil
message:@"테스트입니다."
delegate:nil
cancelButtonTitle:@"확인"
otherButtonTitles:nil];
[alertView show];
이 경우 iOS8에서는 message가 상단에 딱 붙어 보입니다.
2. 해결 방법 (Objective-C, UIAlertView)
title을 nil → 빈 문자열("")로 변경하면 됩니다.
UIAlertView *alertView =
[[UIAlertView alloc] initWithTitle:@""
message:@"테스트입니다."
delegate:nil
cancelButtonTitle:@"확인"
otherButtonTitles:nil];
[alertView show];
title이 빈 문자열이면 레이아웃이 정상적으로 적용되기 때문에 message가 제대로 중앙에 표시됩니다.
3. 중요: UIAlertView는 완전 deprecated
iOS9부터 UIAlertView는 완전히 사용 금지(deprecated) 되었고, 2025년 현재는 UIAlertController를 반드시 사용해야 합니다.
따라서 최신 앱에서는 다음 방식으로 구현합니다.
let alert = UIAlertController(
title: nil, // iOS8 레거시 문제 없음
message: "테스트입니다.",
preferredStyle: .alert
)
alert.addAction(UIAlertAction(title: "확인", style: .default))
present(alert, animated: true)
UIAlertController는 iOS8에서 도입된 새로운 Alert 시스템으로 title이 nil이어도 레이아웃이 정상적으로 표시되기 때문에 위와 같은 문제는 발생하지 않습니다.
4. 정리
- iOS8에서만
UIAlertView메시지가 상단으로 붙는 버그 있음 - 해결: title을 nil → 빈 문자열("")로 변경
- 현재(2025년 기준): UIAlertView는 사용 금지, 반드시
UIAlertController사용 - 최신 Alert 시스템에서는 해당 문제가 발생하지 않음
레거시 프로젝트 유지보수라면 간단히 title을 빈 문자열로 바꾸는 방식으로 해결할 수 있고, 신규 프로젝트라면 UIAlertController만 사용하면 됩니다.
'IT·디지털 > IT 개발자 팁' 카테고리의 다른 글
| iis7 64bit 에서 32bit 응용프로그램 사용시 html asp 매핑 사용하기 (0) | 2015.06.16 |
|---|---|
| Maven에서 톰캣 서버 실행하기 (2025 최신 기준 + 레거시 Tomcat Plugin 포함) (0) | 2015.01.15 |
| [iOS] iPhone에서 올바른 URL 인코딩 방법 (Objective-C & Swift 최신 정리) (0) | 2013.12.10 |
| [iOS] NSNotificationCenter 사용법 정리 (2025 최신 버전: NotificationCenter / Swift 포함) (0) | 2013.12.05 |
| IIS HTTP Err Connection_Dropped 오류의 원인 분석과 실제 해결 사례 (2) | 2013.11.26 |