init
This commit is contained in:
293
demo/Views/Home/HomeView.swift
Normal file
293
demo/Views/Home/HomeView.swift
Normal file
@@ -0,0 +1,293 @@
|
||||
//
|
||||
// HomeView.swift
|
||||
// demo
|
||||
//
|
||||
// Created by Jason on 2024/1/23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct HomeView: View {
|
||||
@State private var selectedTab = 0
|
||||
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
VStack(spacing: 12) {
|
||||
// Search
|
||||
// Banner
|
||||
// Navigation
|
||||
// TodayKill
|
||||
// Living
|
||||
// Bestselling
|
||||
PartyReading
|
||||
// NewBooks
|
||||
// Categories
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(.horizontal, 12)
|
||||
.background(Color.gray.opacity(0.2))
|
||||
}
|
||||
|
||||
let columns = [GridItem(.flexible()), GridItem(.flexible())]
|
||||
|
||||
var Categories: some View {
|
||||
VStack {
|
||||
ScrollView(.horizontal) {
|
||||
HStack {
|
||||
Text("推荐")
|
||||
Text("竞品书单")
|
||||
Text("少儿")
|
||||
Text("武侠")
|
||||
Text("文创")
|
||||
Text("历史")
|
||||
Text("专辑")
|
||||
Text("世纪难题")
|
||||
Text("个性推荐")
|
||||
}
|
||||
}
|
||||
|
||||
LazyVGrid(columns: columns, alignment: .center) {
|
||||
ForEach(0 ..< 20, id: \.self) { _ in
|
||||
GoodsCard()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var NewBooks: some View {
|
||||
VStack(alignment: .leading) {
|
||||
HStack {
|
||||
Text("新书上架")
|
||||
Spacer()
|
||||
|
||||
Image(systemName: "chevron.forward")
|
||||
}
|
||||
|
||||
HStack(alignment: .top) {
|
||||
ForEach(0 ..< 4) { _ in
|
||||
VStack {
|
||||
Image("Images/LaunchScreen")
|
||||
.resizable()
|
||||
.frame(maxHeight: 120)
|
||||
.cornerRadius(4)
|
||||
Text("唐伯虎的故事,成就的是谁")
|
||||
.lineLimit(1)
|
||||
}
|
||||
.frame(maxWidth: 100)
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(12)
|
||||
.background(Color.white)
|
||||
.cornerRadius(12)
|
||||
}
|
||||
|
||||
var PartyReading: some View {
|
||||
VStack(alignment: .leading) {
|
||||
HStack {
|
||||
Text("党政读物预订专区")
|
||||
.font(.title3)
|
||||
.foregroundColor(Color.white)
|
||||
Spacer()
|
||||
ShowMore(title: "全部")
|
||||
}
|
||||
Text("阅读这10本书,让你深度学习党政相关知识,思想提升")
|
||||
.foregroundColor(Color.red)
|
||||
Text("治国必先治党,治党才能国强,进入新时代,以习近平通知为核心的党中央以前所未有的勇气和定理推进全面从严治党,")
|
||||
.font(.caption)
|
||||
.foregroundColor(Color.gray)
|
||||
.lineLimit(2)
|
||||
ScrollView(.horizontal) {
|
||||
HStack(alignment: .top) {
|
||||
ForEach(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { _ in
|
||||
VStack {
|
||||
Image("Images/LaunchScreen")
|
||||
.resizable()
|
||||
.frame(maxWidth: 120, maxHeight: 150)
|
||||
.cornerRadius(4)
|
||||
Text("唐伯虎的故事,成就的是谁")
|
||||
.lineLimit(1)
|
||||
}
|
||||
.frame(maxWidth: 100)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(12)
|
||||
.background(LinearGradient(colors: [Color.red, Color.white], startPoint: UnitPoint.top, endPoint: UnitPoint.bottom))
|
||||
.cornerRadius(12)
|
||||
}
|
||||
|
||||
var Bestselling: some View {
|
||||
VStack(alignment: .leading) {
|
||||
HStack {
|
||||
Text("畅销图书")
|
||||
Spacer()
|
||||
Text("全部")
|
||||
Image(systemName: "chevron.forward")
|
||||
}
|
||||
ScrollView(.horizontal) {
|
||||
HStack(alignment: .top) {
|
||||
ForEach(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { _ in
|
||||
VStack {
|
||||
Image("Images/LaunchScreen")
|
||||
.resizable()
|
||||
.frame(maxWidth: 120, maxHeight: 150)
|
||||
.cornerRadius(4)
|
||||
Text("唐伯虎的故事,成就的是谁")
|
||||
.lineLimit(1)
|
||||
HStack {
|
||||
Image(systemName: "eye")
|
||||
Text("299万")
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: 100)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(12)
|
||||
.background(Color.white)
|
||||
.cornerRadius(12)
|
||||
}
|
||||
|
||||
var Living: some View {
|
||||
HStack {
|
||||
ForEach(0 ..< 3) { _ in
|
||||
VStack {
|
||||
HStack {
|
||||
Text("正在直播")
|
||||
Image(systemName: "livephoto")
|
||||
}
|
||||
Image("Images/LaunchScreen")
|
||||
.resizable(resizingMode: /*@START_MENU_TOKEN@*/ .stretch/*@END_MENU_TOKEN@*/)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(maxWidth: 120)
|
||||
.cornerRadius(12)
|
||||
}
|
||||
.background(Color.pink.opacity(0.5))
|
||||
.cornerRadius(12)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var TodayKill: some View {
|
||||
VStack(alignment: .leading) {
|
||||
HStack {
|
||||
Text("今日秒杀")
|
||||
Text("00:00:00")
|
||||
}
|
||||
HStack {
|
||||
Image("Images/LaunchScreen")
|
||||
.resizable(resizingMode: /*@START_MENU_TOKEN@*/ .stretch/*@END_MENU_TOKEN@*/)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(maxWidth: 120)
|
||||
VStack {
|
||||
Text("石床垫:阿特伍德黑暗就故事(有的人说啥就是啥呢有的人说啥就是啥呢有的人说啥就是啥呢)")
|
||||
.multilineTextAlignment(/*@START_MENU_TOKEN@*/ .leading/*@END_MENU_TOKEN@*/)
|
||||
.lineLimit(/*@START_MENU_TOKEN@*/2/*@END_MENU_TOKEN@*/)
|
||||
.foregroundColor(Color.white)
|
||||
Text("¥19.99")
|
||||
.foregroundColor(Color.red)
|
||||
.padding(12)
|
||||
.cornerRadius(12)
|
||||
.background(Color.white)
|
||||
HStack {
|
||||
Text("抢购")
|
||||
Image(systemName: "chevron.forward")
|
||||
}
|
||||
.foregroundColor(Color.white)
|
||||
}
|
||||
}
|
||||
HStack {
|
||||
ForEach(0 ..< 5) { _ in
|
||||
VStack {
|
||||
Image("Images/LaunchScreen")
|
||||
.resizable(resizingMode: /*@START_MENU_TOKEN@*/ .stretch/*@END_MENU_TOKEN@*/)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.frame(maxWidth: 120)
|
||||
Text("是石床垫:阿特伍德黑暗就故事")
|
||||
.lineLimit(1)
|
||||
Text("¥19.99")
|
||||
.foregroundColor(Color.red)
|
||||
}
|
||||
.frame(maxWidth: 110)
|
||||
.background(Color.white)
|
||||
}
|
||||
}
|
||||
.padding(12)
|
||||
.background(Color.white.opacity(0.3))
|
||||
}
|
||||
.frame(maxWidth: /*@START_MENU_TOKEN@*/ .infinity/*@END_MENU_TOKEN@*/)
|
||||
.background(Color.pink)
|
||||
.cornerRadius(12)
|
||||
}
|
||||
|
||||
var Navigation: some View {
|
||||
HStack(spacing: 32) {
|
||||
ForEach(/*@START_MENU_TOKEN@*/0 ..< 5/*@END_MENU_TOKEN@*/) { _ in
|
||||
VStack {
|
||||
Image("Images/logo")
|
||||
.resizable(resizingMode: /*@START_MENU_TOKEN@*/ .stretch/*@END_MENU_TOKEN@*/)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
.background(Color.white)
|
||||
.cornerRadius(64)
|
||||
|
||||
Text("图书")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var Banner: some View {
|
||||
HStack {
|
||||
Image("Images/banner1")
|
||||
.resizable(resizingMode: .stretch)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
Image("Images/banner2")
|
||||
.resizable(resizingMode: .stretch)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
Image("Images/banner3")
|
||||
.resizable(resizingMode: .stretch)
|
||||
.aspectRatio(contentMode: .fit)
|
||||
}
|
||||
|
||||
.frame(maxWidth: /*@START_MENU_TOKEN@*/ .infinity/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
|
||||
var Search: some View {
|
||||
HStack(alignment: .center, spacing: 16) {
|
||||
HStack {
|
||||
Image(systemName: "magnifyingglass")
|
||||
.resizable()
|
||||
.frame(width: 18, height: 18)
|
||||
.foregroundColor(Color.gray)
|
||||
Text("搜索书籍")
|
||||
.foregroundColor(Color.gray)
|
||||
Spacer()
|
||||
}
|
||||
.frame(maxWidth: /*@START_MENU_TOKEN@*/ .infinity/*@END_MENU_TOKEN@*/)
|
||||
.padding(12)
|
||||
.background(Color.white)
|
||||
.cornerRadius(32)
|
||||
ZStack {
|
||||
Image(systemName: "bell").resizable().frame(width: 24, height: 24)
|
||||
Text("9")
|
||||
.font(.system(size: 12))
|
||||
.padding(4)
|
||||
.frame(minWidth: 24)
|
||||
.background(Color.red)
|
||||
.foregroundColor(Color.white)
|
||||
.cornerRadius(99)
|
||||
.offset(x: 10, y: -10)
|
||||
}
|
||||
.padding(.trailing, 12)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// #Preview {
|
||||
// HomeView()
|
||||
// }
|
||||
18
demo/Views/Home/NoticeListView.swift
Normal file
18
demo/Views/Home/NoticeListView.swift
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// NoticeListView.swift
|
||||
// demo
|
||||
//
|
||||
// Created by Jason on 2024/1/23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct NoticeListView: View {
|
||||
var body: some View {
|
||||
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
NoticeListView()
|
||||
}
|
||||
18
demo/Views/Home/NoticeView.swift
Normal file
18
demo/Views/Home/NoticeView.swift
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// NoticeView.swift
|
||||
// demo
|
||||
//
|
||||
// Created by Jason on 2024/1/23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct NoticeView: View {
|
||||
var body: some View {
|
||||
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
NoticeView()
|
||||
}
|
||||
18
demo/Views/Home/SearchView.swift
Normal file
18
demo/Views/Home/SearchView.swift
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// SearchView.swift
|
||||
// demo
|
||||
//
|
||||
// Created by Jason on 2024/1/23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct SearchView: View {
|
||||
var body: some View {
|
||||
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
SearchView()
|
||||
}
|
||||
Reference in New Issue
Block a user