궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
USEFUL CODE

(CODE) 자동으로 두 줄로 문장을 나눠주는 메서드

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

문장을 나눠주는 메서드

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' 부분 숫자를 수정하며 결괏값을 확인해 보는 것이 좋습니다.

 

읽어주셔서 감사합니다🤟


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.