이번에 MacOS를 Ventura로 업데이트 했습니다. 그리고 나서 JWords의 Mac용 앱을 실행시켰는데 아래와 같이 Picker에 줄바꿈 적용이 안되어 있더라구요. 아래 켭쳐처럼 말이죠.
Ventura로 업데이트하기 전에는 원래는 아래와 같은 모습이었습니다. String 안에 “\n”을 입력하면 Picker의 선택지 안에서 텍스트 줄바꿈을 할 수 있었습니다. 아래 코드를 보시면 Picker 안의 Text에 “\n”이 있는 것을 볼 수 있습니다.
Picker("", selection: $viewModel.selectedSampleID) {
Text(viewModel.samples.isEmpty ? "검색결과 없음" : "미선택")
.tag(nil as String?)
ForEach(viewModel.samples, id: \.id) { example in
Text("뜻: \(example.meaningText)\n가나: \(example.ganaText)\n한자: \(example.kanjiText)")
.tag(example.id as String?)
}
}
아마 Ventura로 업데이트 되면서 더이상 Picker 내부에서 줄바꿈을 허용하지 않도록 된 것 같았습니다. String 안에 “\n”이 있어도 무시하도록 바뀐 것입니다. 하지만 저렇게 그대로 두면 가독성이 너무 떨어집니다. 저는 “\n”이 안된다면 “\t”라도 활용해서 가독성을 높이기로 했습니다.
Picker("", selection: $viewModel.selectedSampleID) {
Text(viewModel.samples.isEmpty ? "검색결과 없음" : "미선택")
.tag(nil as String?)
ForEach(viewModel.samples, id: \.id) { example in
Text("뜻: \(example.meaningText)\t가나: \(example.ganaText)\t한자: \(example.kanjiText)")
.tag(example.id as String?)
}
}
SwiftUI에서 특히 이런 변화가 자주 일어나는 것 같은데요. OS 버전이 바뀔 때 화면에 보이는 것이 달라지는 경우가 자주 있습니다.
예전에 실무에서 있었던 일인데요. iOS 14에서는 ScrollView 안에 VStack들을 넣는 경우에는 VStack 사이의 spacing의 default 값이 0이었는데 iOS 15에서는 8로 바뀌었습니다.
이로 인해서 디자이너 분의 지적이 있었고 결국 전처리문으로 버전별 분기문을 통해서 spacing을 통일한 기억이 있네요.
OS가 업데이트될 때 기존의 앱이 문제가 없는지 항상 점검 해봐야 할 것 같습니다.