🩹

【SwiftUI】長い文を全部表示する縦方向の余裕がないときは、横スクロールに自動で切り替える

2025/03/11に公開
import SwiftUI

struct VeryLongSentenceView: View {
    
    let showYouWords = "I need to show you something before you use my app. It's pretty complicated, so you'll need some instructions."
    
    var body: some View {
        
        ViewThatFits(in: .vertical) {
            Text(showYouWords)
            ScrollView(.horizontal) {
                Text(showYouWords)
            }
        }

        Rectangle()
            .frame(height: 680.0)
    }
}

#Preview {
    VeryLongSentenceView()
}

Rectangleの高さは680、文を全部表示する余裕がある

Rectangleの高さは690、文を全部表示する余裕がない

文のところがスクロールビューになりました。

さいごに

「文章は一度に見ている部分はごく一部分である」という事実に甘える作戦です。見ず(づ?)らいといえば見ずらいので応急処置的なポジションになるのではと思います。
他にもやりかたがあるのではないかと思います。
計算が複雑なレイアウトでは意図するようにならないかもしれません。
スクロールバーと文字が重なるので、paddingで余白を作ってもいいと思います。

Discussion