
UIWindow의 hasBorders 프로퍼티는 UIWindow의 경계를 표시하는 데 사용됩니다. 그러나 hasBorders를 true로 설정한 후 borderStyle을 .line로 설정하면 여백이 제대로 적용되지 않는 이유는 borderStyle이 .line일 때, UIWindow의 경계는 화면의 여백을 표시하는 것이 아니라 UIWindow의 프레임의 경계를 표시하기 때문입니다.
UIScreen.main.bounds는 화면의 전체 크기를 반환합니다. 그러나 UIWindow의 프레임은 화면의 전체 크기와 다를 수 있습니다. 예를 들어, 화면의 여백을 설정했을 때, UIWindow의 프레임은 여백을 포함한 화면의 크기를 가질 수 있습니다.
따라서, borderStyle을 .line로 설정했을 때, UIWindow의 경계는 프레임의 경계를 표시하기 때문에 여백이 제대로 적용되지 않을 수 있습니다.
해결 방법은 다음과 같습니다.
- borderStyle을 .bezel로 설정합니다. bezel은 화면의 여백을 표시하는 데 사용됩니다.
- 프레임의 여백을 설정하는 대신, UIWindow의 contentSize을 설정하여 여백을 포함한 화면의 크기를 설정합니다.
예를 들어, 다음 코드를 사용할 수 있습니다.
swift
let window = UIWindow(frame: UIScreen.main.bounds)
window.hasBorders = true
window.borderStyle = .bezel
2025-04-22 17:48