반응형
문장을 나눠주는 메서드
SwiftUI
로 텍스트를 작성하면 길게 구성된 문장의 텍스트를 화면에 적절하게 나타내기 위해 두 줄 또는 세 줄로 보여 주고 싶을 때가 있습니다. 예를 들어
안녕하세요 서근입니다. 저의 블로그에 찾아와 주셔서 감사합니다.
라는 문장이 있을 때 '저의
'에서 '저
'이라는 글자 까지가 문장의 절반에 해당됩니다. 그래서 이 글자를 기준으로 앞과 뒤에서 가장 가까운 띄어쓰기를 찾아서 문장을 두 줄로 나눕니다. 결과적으로
"안녕하세요 서근입니다. 저의"+
"\n
"+
"블로그에 찾아와 주셔서 감사합니다."
이라는 형태로 구분되게 됩니다.
위처럼 사용하기 위해서는 메서드를 작성해야 합니다.
Code
/* 한 문장으로 길게 구성된 텍스트를 화면에 적장하게 나타내기위해 두 줄로 나누워 주는 기능 */
func splitText(_ text: String) -> String {
guard !text.isEmpty else { return text }
let centerIdx = text.index(text.startIndex, offsetBy: text.count / 2)
let centerSpaceIdx = text[..<centerIdx].lastIndex(of: " ")
?? text[centerIdx...].firstIndex(of: " ")
?? text.index(before: text.endIndex)
let afterSpaceIdx = text.index(after: centerSpaceIdx)
let lhsString = text[..<afterSpaceIdx].trimmingCharacters(in: .whitespaces)
let rhsString = text[afterSpaceIdx...].trimmingCharacters(in: .whitespaces)
return String(lhsString + "\n" + rhsString)
}
사용 방법
위 splitText
메서드를 SwiftUI
에서 호출하는 방법입니다.
struct ContentView: View {
var body: some View {
VStack {
Image("seogun")
.resizable()
.scaledToFit()
.frame(width: 100)
Text(splitText("안녕하세요 서근입니다. 저의 블로그에 찾아와주셔서 감사합니다."))
.padding()
}
}
//splitText 메서드 구현부
}
}
위처럼 Text
부분에 원하는 문구를 작성해가며 비교할 수 있고,
let centerIdx = text.index(text.startIndex, offsetBy: text.count / 2)
'2
' 부분 숫자를 수정하며 결괏값을 확인해 보는 것이 좋습니다.
읽어주셔서 감사합니다🤟
'USEFUL CODE' 카테고리의 다른 글
Swift : 번들에 있는 sound 파일 재생 함수 (0) | 2021.07.29 |
---|---|
(CODE) SwiftUI 컬러 익스텐션 만들기 - 헥스코드활용 (0) | 2021.05.08 |
(CODE) 베젤이 없는 기종과 있는 기기에 SafeArea 각각 적용법 (0) | 2021.03.25 |
(CODE) DateFormatter - 한국날짜 형식으로 (1) | 2021.03.23 |
SwiftUI: 탭하여 키보드 숨기는방법 - hideKeyboard() (1) | 2021.03.22 |