본문 바로가기
반응형

swift5

[iOS] iOS8 AlertView 텍스트 상단 정렬 문제와 해결 방법 iOS8 AlertView 텍스트 정렬 문제예전 iOS 앱을 유지보수하다 보면 UIAlertView를 사용한 오래된 코드에서, iOS8 업데이트 후 Alert 메시지 텍스트가 상단에 붙어 보이는 문제를 겪은 적이 있습니다. iOS7에서는 정상 가운데 정렬이었지만, iOS8에서 레이아웃 방식이 변경되면서 발생한 현상입니다.해결은 매우 단순합니다. AlertView 제목(title)에 nil 대신 빈 문자열("")을 넣으면 텍스트가 다시 정상적으로 중앙 정렬됩니다.1. 문제 원인iOS8에서는 UIAlertView 내부 레이아웃이 변경되면서, title이 nil일 경우 message가 타이틀 영역까지 끌어올려지는 레이아웃 버그가 있었습니다.즉, 다음 코드처럼 title을 nil로 지정하면 문제가 발생합니다:U.. 2014. 10. 10.
[iOS] iPhone에서 올바른 URL 인코딩 방법 (Objective-C & Swift 최신 정리) [iOS] iPhone에서 URL 인코딩이 제대로 되지 않을 때예전 iOS 앱 유지보수 중, 로그인 기능에서 비밀번호에 = 문자가 포함되면 정상적으로 서버에 전달되지 않는 문제가 있었습니다. 원인은 URL 인코딩에 사용하던 API가 특수문자를 완전하게 인코딩하지 않았기 때문입니다.특히 예전 iOS 개발에서 많이 사용하던:[string stringByAddingPercentEscapesUsingEncoding:]이 메서드는 다음과 같은 문제를 가지고 있습니다.이미 deprecated 됨/ & = ? + # % 등 중요한 URL 예약 문자 인코딩 불가능RFC 3986 기준을 완전히 만족하지 않음즉, “진정한 URL 인코딩”이 되지 않아 인증/로그인/REST API 호출에서 문제가 발생할 수 있습니다.1. (.. 2013. 12. 10.
[iOS] 화면 밝기를 강제로 최대값으로 변경 후 다시 복원하는 방법 (2025 최신 기준) iOS에서 화면 밝기 변경 후 이전 밝기를 복원하기편의점이나 매장 결제 시, 모바일 바코드를 직원에게 보여줄 때 화면을 자동으로 최대 밝기로 올렸다가 해당 화면이 종료되면 이전 밝기로 복원해달라는 요청을 많이 받습니다.예전에는 Objective-C에서 UIScreen의 brightness를 직접 변경하는 방식으로 구현했고, 아직도 유지보수 중인 레거시 앱에서는 동일한 방식이 사용됩니다.1. 예전 Objective-C (레거시 프로젝트 유지보수용)헤더 파일에 저장용 변수 선언:CGFloat oldBrightness;ViewDidLoad에서 기존 밝기 저장 + 밝기 강제 최대- (void)viewDidLoad { [super viewDidLoad]; oldBrightness = [[UIScreen.. 2013. 10. 11.
[iOS] 옛날 아이폰5 해상도 대응 방식, 지금은 어떻게 해야 할까? (2025년 최신 기준) [iOS] 아이폰5 해상도 대응 — 오래된 방식에서 현재 방식으로iPhone 5가 처음 출시되던 시절(4인치, 1136×640), 많은 개발자들이 3.5인치(480×320) 기반 레이아웃에서 화면을 늘리기 위해 고생했습니다. 당시에는 Default-568h@2x.png를 추가하거나, nib 파일의 autoresizing mask를 조정하거나, 직접 [UIScreen mainScreen] bounds] 값을 비교하는 식으로 대응했습니다.하지만 이 방식은 2025년 현재 개발 방식과는 완전히 다릅니다. iPhone 5는 이미 지원 종료된 디바이스이며, 지금은 Auto Layout / Safe Area 기반의 반응형 UI가 표준입니다.1. 옛날 방식: iPhone5 대응을 이렇게 했었다당시에는 iPhone5만.. 2013. 1. 8.
[iOS] UIAlertView didDismissWithButtonIndex 문제, 지금은 어떻게 해결할까? (UIAlertController 기준) 예전에 iOS 개발을 하셨던 분들은 UIAlertView와 그 델리게이트 메서드인 clickedButtonAtIndex:, didDismissWithButtonIndex: 때문에 한 번쯤은 고생해 보셨을 것입니다. 저 역시 Alert가 백그라운드 전환(Home 버튼)이나 다른 Alert와 얽히는 상황에서 델리게이트가 예상대로 호출되지 않아 며칠 동안 디버깅(삽질)을 했던 기억이 있습니다.하지만 이제는 상황이 많이 달라졌습니다. UIAlertView는 iOS 8에서 이미 deprecated 되었고, iOS 13 이후로는 사실상 쓰지 않는 레거시 API입니다. 현재는 UIAlertController를 사용하는 것이 정석이며, 예전처럼 didDismissWithButtonIndex에 의존해 상태를 관리하는 방.. 2012. 12. 4.