首页 > 其他分享 >SwiftUI ZStack、HStack、VStack 布局

SwiftUI ZStack、HStack、VStack 布局

时间:2024-05-07 21:14:02浏览次数:27  
标签:padding title Color VStack SwiftUI var textColor ZStack 255

代码

//
//  ContentView.swift
//  SwiftUIStacks
//
//  Created by CHEN Hao on 2024/5/6.
//

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(spacing:15) {
            HeaderView()
            HStack(spacing: 15) {
                PricingView(title: "Basic", price: "$9", textColor: .white, bgColor: .purple)
                ZStack {
                    PricingView(title: "Pro", price: "$19", textColor: .black, bgColor: Color(red: 240/255, green: 240/255, blue: 240/255))
                    Text("Best for designer")
                        .font(.system(.caption, design: .rounded))
                        .fontWeight(.bold)
                        .foregroundStyle(.white)
                        .padding(5)
                        .background(Color(red: 255/255, green: 183/255, blue: 37/255))
                        .offset(x:0, y: 87)
                }
            }
            .padding(.horizontal) // 水平外间距
            
            ZStack {
                PricingView(title: "Team", price: "$299", textColor: .white, bgColor: Color(red: 62/255, green: 63/255, blue: 70/255), icon: "wand.and.rays")
                    .padding()
                Text("Perfect for teams with 20 members")
                    .font(.system(.caption, design: .rounded))
                    .fontWeight(.bold)
                    .foregroundStyle(.white)
                    .padding(5)
                    .background(Color(red: 255/255, green: 183/255, blue: 37/255))
                    .offset(x:0, y: 110)
            }
            
            
        }
        Spacer() // 留白
    }
}

#Preview {
    ContentView()
}

struct HeaderView: View {
    var body: some View {
        HStack {
            VStack(alignment: .leading, spacing: 2) {
                Text("Choose")
                    .font(.system(.largeTitle, design: .rounded))
                    .fontWeight(.black)
                Text("Your Plan")
                    .font(.system(.largeTitle, design: .rounded))
                    .fontWeight(.black)
            }
            Spacer()
        }
        .padding()
    }
}

struct PricingView: View {
    
    var title: String
    var price: String
    var textColor: Color
    var bgColor: Color
    var icon: String?
    
    var body: some View {
        VStack{
            if let icon = icon {
                Image(systemName: icon)
                    .font(.largeTitle)
                    .foregroundStyle(textColor)
            }
            Text(title)
                .font(.system(.title, design: .rounded))
                .fontWeight(.black)
                .foregroundStyle(textColor)
            Text(price)
                .font(.system(size: 40,weight: .heavy, design: .rounded))
                .foregroundStyle(textColor)
            Text("pre month")
                .font(.headline)
                .foregroundStyle(textColor)
        }
        .frame(minWidth: 0, maxWidth: .infinity,minHeight: 100) // 自定义尺寸
        .padding(40)
        .background(bgColor)
        .clipShape(RoundedRectangle(cornerRadius: 10)) // 裁剪成圆角矩形
    }
}

效果

作业

//
//  HomeWork.swift
//  SwiftUIStacks
//
//  Created by CHEN Hao on 2024/5/7.
//

import SwiftUI

struct HomeWork: View {
    var body: some View {
        ZStack{
            PricingView(title: "Basic", price: "$9", textColor: .white, bgColor: Color(.purple), icon: "mic.circle")
                .padding()
                .offset(x:0,y: 180)
            PricingView(title: "Pro", price: "$19", textColor: .white, bgColor: Color(.orange), icon: "message")
                .padding()
                .scaleEffect(0.95)
            PricingView(title: "Team", price: "$299", textColor: .white, bgColor: Color(red: 62/255, green: 63/255, blue: 70/255), icon: "wand.and.rays")
                .padding()
                .scaleEffect(0.90)
                .offset(x:0, y:-180)
        }
    }
}

#Preview {
    HomeWork()
}

标签:padding,title,Color,VStack,SwiftUI,var,textColor,ZStack,255
From: https://www.cnblogs.com/thankcat/p/18178390

相关文章

  • SwiftUI Image 图片处理
    代码片段////ContentView.swift//SwiftUIImage////CreatedbyCHENHaoon2024/5/6.//importSwiftUIstructContentView:View{varbody:someView{Image("paris").resizable()//延伸模式,平铺整个屏幕/......
  • SwiftUI Text 文字处理
    代码////ContentView.swift//SwiftUIText////CreatedbyCHENHaoon2024/5/6.//importSwiftUIstructContentView:View{varbody:someView{VStack{Text("Yourtimeislimited,sodon’twasteitlivingsomeoneels......
  • # 在 SwiftUI 中使用 Metal Shader
    简介从iOS17/macOS14开始,SwiftUI支持使用Metalshader来实现一些特效。主要提供三个ViewModifier:colorEffect、distortionEffect和layerEffect。每个modifier的第一个参数是传入的Shader实例。此外,View实例还新增了一个visualEffectmodifier,用于暴露修饰内......
  • 大师学SwiftUI第6章 - 声明式用户界面 Part 4
    步进器视图Stepper视图创建一个带递增和递减按钮的控件。该结构体提供了多个初始化方法,包含不同的配置参数组合。以下是最常用的一部分。Stepper(String,value:Binding,in:Range,step:Float,onEditingChanged:Closure):此初始化方法创建一个Stepper视图。第一个参数定义标签......
  • 大师学SwiftUI第6章 - 声明式用户界面 Part 3
    安全域视图SwiftUI还内置了创建安全文本框的视图。这一视图会把用户输入的字符替换成点以及隐藏敏感信息,比如密码。SecureField(String,text:Binding):该初始化方法创建一个安全输入框。第一个参数定义占位文本,text参数为存储用户插入值的绑定属性。实现方式与TextField视图相同,我......
  • SwiftUI 集成 IMKit
    SwiftUI集成IMKit在SwiftUI中,集成IMKit中RCConversationListViewController和RCConversationViewController两页面可能存在以下问题:1、直接在View中使用,两个页面会错位;2、用NavigationView集成会话列表和会话页面,标题失效;分析这两个页面强依赖导航UINavigationCont......
  • SwiftUI 中Webview与JS交互
    iOS中WKWebview原生与网页端JS交互常用的方法是首先在webview中注入标定好的方法名,例如标定一个request方法letconfig=WKWebViewConfiguration()letuserContent=WKUserContentController();  vardealMessage=DealMessage()userContent.add(dealMessage,name:......
  • 多工作表数据去重,VSTACK与UNIQUE函数发挥作用!
    1职场实例小伙伴们大家好,今天我们来继续学习Excel在职场办公中的应用案例:如何提取多个工作表中指定区域内的不重复值?这个问题实质是一个删除重复值保留唯一值的问题,但是涉及到了在多个工作表中的操作,显得不是那么的有思路。但是我们运用两个新函数VSTACK函数与UNIQUE函数就可以很轻......
  • SwiftUI 教程
    SwiftUI教程iOSDevLogiOSDevLog​关注他 42人赞同了该文章原文:LearnSwiftUIwithfreetutorials 作者:PaulHudson  SwiftUI是在WWDC19的主题演讲期间宣布的,我们已经看过大量的免费教程,如文章,YouTube视频,书籍等等-可以肯定的......
  • 大师学SwiftUI第18章Part1 - 图片选择器和相机
    如今,个人设备主要用于处理图片、视频和声音,苹果的设备也不例外。SwiftUI可以通过Image视图显示图片,但需要其它框架的支持来处理图片、在屏幕上展示视频或是播放声音。本章中我们将展示Apple所提供的这类工具。图片选择器SwiftUI内置了一个PhotosPicker结构体用于生成一个视图,允许用......