ContentView.swift
//
// ContentView.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct ContentView: View {
var body: some View {
TabView{
Home().tabItem {
Image(systemName: "house").font(.title)
}
Text("activity").tabItem {
Image(systemName: "person.fill.checkmark").font(.title)
}
Text("search").tabItem {
Image(systemName: "magnifyingglass.circle").font(.title)
}
Text("person").tabItem {
Image(systemName: "gear").font(.title)
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Home.swift
//
// Home.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct Home : View {
@State var selectedTab = Tabs.FirstTab
var body : some View{
VStack(alignment: .leading,spacing: 12){
HStack{
Button(action: {
}) {
Image(systemName: "slider.horizontal.3")
}
Spacer()
Button(action: {
}) {
Image("photo1")
.resizable()
.frame(width: 40, height: 40)
.clipShape(Circle())
}
}
Text("Find More").fontWeight(.heavy).font(.largeTitle).padding(.top,15)
HStack{
HStack {
Text("Experiences").fontWeight(.heavy)
.foregroundColor(selectedTab == .FirstTab ? Color.red : Color.black)
.onTapGesture {
self.selectedTab = .FirstTab
}
Spacer()
Text("Adventures").fontWeight(.heavy)
.foregroundColor(selectedTab == .SecondTab ? Color.red : Color.black)
.onTapGesture {
self.selectedTab = .SecondTab
}
Spacer()
Text("Activities").fontWeight(.heavy)
.foregroundColor(selectedTab == .ThirdTab ? Color.red : Color.black)
.onTapGesture {
self.selectedTab = .ThirdTab
}
}
Spacer()
}.padding([.top],30)
.padding(.bottom, 15)
if selectedTab == .FirstTab {
FirstTabView()
} else if selectedTab == .SecondTab {
SecondTabView()
} else {
ThirdTabView()
}
}.padding()
}
}
struct Home_Previews: PreviewProvider {
static var previews: some View {
Home()
}
}
struct FirstTabView : View {
var body : some View {
ExperiencesTab()
BottomView().padding(.top, 10)
}
}
struct SecondTabView : View {
var body : some View {
AdventuresTab()
BottomView().padding(.top, 10)
}
}
struct ThirdTabView : View {
var body : some View {
ActivitiesTab()
BottomView().padding(.top, 10)
}
}
enum Tabs {
case FirstTab
case SecondTab
case ThirdTab
}
BottomView.swift
//
// BottomView.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct BottomView : View {
var body : some View{
VStack{
HStack{
Text("What you want ?").fontWeight(.heavy)
Spacer()
Button(action: {
}) {
Text("View all").foregroundColor(.gray)
}
}.padding([.top], 15)
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 35){
Button(action: {
}) {
VStack(spacing: 8){
Image("whatyouwant_01")
.resizable().frame(width: 50, height: 50).cornerRadius(10)
Text("Hiking").foregroundColor(.gray)
}
}
Button(action: {
}) {
VStack(spacing: 8){
Image("whatyouwant_02")
.resizable().frame(width: 50, height: 50).cornerRadius(10)
Text("Ski").foregroundColor(.gray)
}
}
Button(action: {
}) {
VStack(spacing: 8){
Image("whatyouwant_03")
.resizable().frame(width: 50, height: 50).cornerRadius(10)
Text("Sky Diving").foregroundColor(.gray)
}
}
Button(action: {
}) {
VStack(spacing: 8){
Image("whatyouwant_04")
.resizable().frame(width: 50, height: 50).cornerRadius(10)
Text("SkateBoard").foregroundColor(.gray)
}
}
}
}.padding(.leading, 20)
.padding([.top,.bottom], 15)
}
}
}
struct BottomView_Previews: PreviewProvider {
static var previews: some View {
BottomView()
}
}
//
// Detail.swift
// Swiftuitest
//
// Created by Cairocoders on 11/4/21.
//
import SwiftUI
struct Detail : View {
var travel : Travelling
var body : some View{
VStack{
GeometryReader { geometry in
Image(travel.image)
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: geometry.size.width, height: geometry.size.height)
.offset(y: geometry.frame(in: .global).minY/50)
.padding(.bottom, -200)
.edgesIgnoringSafeArea(.all)
}
GeometryReader{geo in
ScrollView(.vertical, showsIndicators: true) {
VStack(alignment: .leading){
VStack(alignment: .leading, spacing: 10){
HStack{
VStack(alignment: .leading){
Text(travel.name).fontWeight(.heavy).font(.largeTitle)
}
Spacer()
Text("$587").foregroundColor(Color.orange).font(.largeTitle)
}
}.padding()
VStack(alignment: .leading, spacing: 15){
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text(travel.location).foregroundColor(Color.orange)
}
HStack(spacing : 8){
ForEach(0..<travel.rating){_ in
Image(systemName: "star.fill").font(.body).foregroundColor(.yellow)
}
}
Text("People").fontWeight(.heavy)
Text("Number Of People In Your Group").foregroundColor(.gray)
HStack(spacing: 6){
ForEach(0..<5){i in
Button(action: {
}) {
Text("\(i + 1)").foregroundColor(.white).padding(20)
}.background(Color.orange)
.cornerRadius(8)
}
}
}.padding(.horizontal,15)
detailBottom()
}
}
}.background(Color.white)
.clipShape(Rounded())
.padding(.top, -75)
}
}
}
struct Detail_Previews: PreviewProvider {
static var previews: some View {
let travels = Travelling(id: 1, name: "test", image: "details", rating: 1, location: "Olongapo")
return Detail(travel: travels)
}
}
detailBottom.swift
//
// detailBottom.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct detailBottom : View {
var body : some View{
VStack(alignment: .leading, spacing: 10){
Text("Description").fontWeight(.heavy)
Text("Towering redwoods, peaceful parkland and the magnificent coast are just some of the landscapes that make the Peninsula and South Bay extraordinary.").foregroundColor(.gray)
HStack(spacing: 8){
Button(action: {
}) {
Image(systemName: "bookmark")
}
Button(action: {
}) {
HStack(spacing: 6){
Text("Book Your Experience")
Image(systemName: "arrow.right.circle").renderingMode(.original)
}.foregroundColor(.white)
.padding()
}.background(Color.orange)
.cornerRadius(8)
}.padding(.top, 6)
}.padding()
}
}
struct detailBottom_Previews: PreviewProvider {
static var previews: some View {
detailBottom()
}
}
ExperiencesTab.swift
//
// ExperiencesTab.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct ExperiencesTab: View {
@State var show = false
@State var idSelected = 1
@State var imageSelected = "fishing"
@State var nameSelected = "Fishing Time"
@State var locationSelected = "Olongapo City"
@State var ratingSelected = 5
var body : some View{
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 20){
ForEach(data){i in
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
self.idSelected = i.id
self.imageSelected = i.image
self.nameSelected = i.name
self.locationSelected = i.location
self.ratingSelected = i.rating
}) {
Image(i.image)
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text(i.name).fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text(i.location).foregroundColor(.gray)
}
}
}
}
.sheet(isPresented: $show) {
Detail(travel: Travelling(id: self.idSelected, name: self.nameSelected, image: self.imageSelected, rating: self.ratingSelected, location: self.locationSelected))
}
}
}
}
struct ExperiencesTab_Previews: PreviewProvider {
static var previews: some View {
ExperiencesTab()
}
}
AdventuresTab.swift
//
// AdventuresTab.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct AdventuresTab: View {
@State var show = false
var body : some View{
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 20){
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
}) {
Image("adventure1")
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text("Travel Time").fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text("Olongapo City").foregroundColor(.gray)
}
}
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
}) {
Image("adventure2")
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text("Family Camping").fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text("Subic Bay").foregroundColor(.gray)
}
}
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
}) {
Image("adventure3")
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text("Travelling").fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text("Clark").foregroundColor(.gray)
}
}
}
}.sheet(isPresented: $show) {
Detail(travel: Travelling(id: 1, name: "Fishing Time", image: "details", rating: 5, location: "Olongapo City"))
}
}
}
struct AdventuresTab_Previews: PreviewProvider {
static var previews: some View {
AdventuresTab()
}
}
ActivitiesTab.swift
//
// ActivitiesTab.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct ActivitiesTab: View {
@State var show = false
var body : some View{
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 20){
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
}) {
Image("travelling1")
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text("Wipe-clean").fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text("Olongapo City").foregroundColor(.gray)
}
}
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
}) {
Image("travelling2")
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text("Family Camping").fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text("Subic Bay").foregroundColor(.gray)
}
}
VStack(alignment: .leading,spacing: 12){
Button(action: {
self.show.toggle()
}) {
Image("travelling3")
.resizable().frame(width: 200, height: 300).cornerRadius(20)
}
Text("Travelling").fontWeight(.heavy)
HStack(spacing: 5){
Image(systemName: "mappin.and.ellipse").renderingMode(.original)
Text("Clark").foregroundColor(.gray)
}
}
}
}.sheet(isPresented: $show) {
Detail(travel: Travelling(id: 1, name: "Fishing Time", image: "details", rating: 5, location: "Olongapo City"))
}
}
}
struct ActivitiesTab_Previews: PreviewProvider {
static var previews: some View {
ActivitiesTab()
}
}
Rounded.swift
//
// Rounded.swift
// Swiftuitest
//
// Created by Cairocoders
//
import SwiftUI
struct Rounded : Shape {
func path(in rect: CGRect) -> Path {
let path = UIBezierPath(roundedRect: rect, byRoundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 40, height: 40))
return Path(path.cgPath)
}
}
struct Rounded_Previews: PreviewProvider {
static var previews: some View {
Rounded()
}
}
Model.swift
//
// Model.swift
// Swiftuitest
//
// Created by Cairocoders
//
import Foundation
struct Travelling : Identifiable {
var id : Int
var name : String
var image : String
var rating : Int
var location : String
}
var data = [
Travelling(id: 0, name: "Fishing Time", image: "fishing", rating: 2, location: "Olongapo City"),
Travelling(id: 1, name: "Family Camping", image: "family_camping", rating: 5, location: "Subic Bay"),
Travelling(id: 2, name: "Travelling", image: "traveling", rating: 3,location: "Clark")
]
