JWAutumn / ACarousel

A carousel view for SwiftUI | SwiftUI 旋转木马效果
MIT License
381 stars 78 forks source link

GeometryReader包裹ACarousel时会产生一条空白区域(如图所示),但是包裹Image不会产生横线,请问如何去掉该空白区域。代码分别如下所示。 #25

Closed swanfly closed 1 year ago

swanfly commented 1 year ago

GeometryReader包裹ACarousel时会产生一条空白区域(如图所示),但是包裹Image不会产生横线,请问如何去掉该空白区域。代码分别如下所示。

/// GeometryReader下为Image时,效果正常,无空白区域 struct StickyDetailImageView: View {

var body: some View {
    ScrollView(.vertical, showsIndicators: false) {
        GeometryReader { geometry in
            Image("ic_img_placeholder")
                .resizable()
                .scaledToFill()
                .clipped()
                .frame(width: geometry.size.width, height: 250)
        }
        .frame(height: 250)
        .background(.blue)

        Text("GeometryReader下为Image时,效果正常,无空白区域").frame(width: UIScreen.main.bounds.width, height: 300).background(.green)
    }
    .ignoresSafeArea()
}

}

/// GeometryReader下为ACarousel时,效果异常,GeometryReader下会产生一条空白区域 struct StickyDetailACarouselView: View {

let lstBannerData: [DataResBean] = [DataResBean(id: 1, url: "ic_img_placeholder"), DataResBean(id: 2, url: "AppIcon"), DataResBean(id: 3, url: "ic_qrcode_app_download")]
@State var currentBannerIndex = 0

var body: some View {
    ScrollView(.vertical, showsIndicators: false) {
        GeometryReader { geometry in
            ACarousel(lstBannerData,
                      index: $currentBannerIndex,
                      spacing: 0,
                      headspace: 0,
                      sidesScaling: 1.0,
                      isWrap: true,
                      autoScroll: .inactive) { item in

                Image(item.url)
                    .resizable()
                    .scaledToFill()
                    .frame(width: geometry.size.width, height: .none)

            }
          .frame(width: geometry.size.width, height: 250)
          .background(.red)
          .onTapGesture {
              print(geometry.frame(in: .global).minY)
          }
        }
        .frame(height: 250)
        .background(.blue)

        Text("GeometryReader下为ACarousel时,效果异常,GeometryReader下会产生一条空白区域").frame(width: UIScreen.main.bounds.width, height: 300).background(.green)
    }
    .ignoresSafeArea()
}

} WX20221027-235753@2x