//
// ContentView.swift
// Devapp
//
// Created by Cairocoders
//
import SwiftUI
struct ContentView: View {
var body: some View {
Home()
}
}
struct details_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Home: View {
@State var CurrentIndex : Int = 1
var body: some View {
VStack {
//Carousel Slider
TabView(selection: $CurrentIndex) {
ForEach(1...3,id: \.self) {index in
//Custom Scroll Effect
GeometryReader{proxy -> AnyView in
let minX = proxy.frame(in: .global).minX
let width = UIScreen.main.bounds.width
let progress = -minX / (width * 2)
var scale = progress > 0 ? 1 - progress : 1 + progress
scale = scale < 0.7 ? 0.7 : scale
return AnyView(
VStack{
Image("pic\(index)")
.resizable()
.aspectRatio(contentMode: .fit)
.padding(.horizontal,10)
Text("Loren ipsum dlipsum")
.font(.largeTitle)
.fontWeight(.heavy)
.foregroundColor(.white)
//.background(Color.green)
.padding()
Text("Loren ipsum, or dlipsum as is somtine know text usded in layoyt Loren ipsum, or dlipsum as is somtine know text usded in layoyt")
.font(.system(size: 16, weight: .bold))
.foregroundColor(.white)
.padding(.horizontal)
}
.frame(maxHeight: .infinity, alignment: .center)
.scaleEffect(scale)
)
}
.tag(index)
}
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
//custom tab indicator
CustomeTabIndicator(count: 3, current: $CurrentIndex)
.padding(.vertical)
.padding(.top)
VStack(spacing:15) {
Button(action: {}, label: {
HStack{
Image(systemName: "arrow.right.square")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 25, height: 25)
.foregroundColor(.white)
Text("Start")
.fontWeight(.bold)
.foregroundColor(.white)
.frame(maxWidth: .infinity, alignment: .center)
}
.padding(.vertical,13)
.padding(.horizontal)
.background(
RoundedRectangle(cornerRadius: 10)
.fill(Color.black)
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(Color.white,lineWidth: 1)
)
)
})
}
.padding()
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.blue).ignoresSafeArea()
}
}
struct CustomeTabIndicator: View {
var count: Int
@Binding var current: Int
var body: some View {
HStack {
HStack {
ForEach(0..<count,id: \.self) { index in
ZStack {
//image index start from 1..
if (current - 1) == index {
Circle()
.fill(Color.green)
}
else {
Circle()
.fill(Color.white)
.overlay(
Circle()
.stroke(Color.green, lineWidth: 1.5)
)
}
}
.frame(width: 10, height: 10)
}
}
}
}
}
article
Wednesday, May 26, 2021
SwiftUI Carousel Slider Welcome Page
SwiftUI Carousel Slider Welcome Page
