1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SwiftUIでScrollViewするときに影が横に出ないなどのトラブル対処法

Last updated at Posted at 2020-06-01

##この記事で解決できそうなこと
スクリーンショット 2020-06-01 14.25.08.jpg  スクリーンショット 2020-06-01 14.30.36.jpg

せっかく影をつけたのに横に出てないから見栄えが悪い。
スクロールインジケータが画面内側に出ている。

スクリーンショット 2020-06-01 14.33.06.jpg **画像のような状態を目指します**

##起きている問題の原因
SwiftUIのビューの周りにはframeと呼ばれる外枠が存在します。下の画像のように、デフォルトではビューの周りに存在しています。frame()モディファイアは外枠の大きさを変更することで中にあるビューの大きさを変更させるといったイメージですね。
これをスクロールビューで並べると、frameが画面全体に広がっていないので影が外側に出ない、インジケータが画面内に出現するというトラブルが起きます。
スクリーンショット 2020-06-01 14.36.13.jpg

##問題の解決方法
paddingモディファイアによってframeをビューより大きく設定する必要があります。
スクリーンショット 2020-06-01 14.35.59.jpg
.padding(.init(top: 0, leading: 50, bottom: 0, trailing: 50))
のように、中身のビューのどのくらい外に外枠を配置するのか設定することができます。

##ソースコード
**padding``をコメントアウトすることで横に影が表示されるようになります。

import SwiftUI

struct test: View {
    var body: some View {
        ScrollView{
            VStack(spacing: 8){
            ForEach(0..<15){ _ in
        Text("Hello, World!")
            .foregroundColor(.white)
            .frame(width: 300, height: 60)
            .background(Color.yellow)
            .padding(.init(top: 0, leading: 50, bottom: 0, trailing: 50))
            .shadow(radius: 10)
                }
            }
        }
    }
}

struct test_Previews: PreviewProvider {
    static var previews: some View {
        test()
    }
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?