SwiftUI ScrollView 滚动视图

代码#

//
//  ContentView.swift
//  SwiftUIScrollView
//
//  Created by CHEN Hao on 2024/5/7.
//

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            VStack(alignment: .leading) {
                Text("monday, aug 20".uppercased())
                    .font(.caption)
                    .foregroundStyle(.secondary)
                Text("Your Reading")
                    .font(.system(.largeTitle,design: .rounded))
                    .fontWeight(.black)
                    .foregroundStyle(.primary)
            }
            .padding()
            
            // 滚动试图 .horizontal--横向滚动,.vertical--垂直滚动,默认vertical
            ScrollView(.horizontal, showsIndicators: false) {
                HStack {
                    Group { // 群组视图 群组内视图设置统一样式
                        CardView(image: "swiftui-button", category: "SwiftUI", heading: "Drawing a Border with Rounded Corners", author: "Simon Ng")
                        CardView(image: "macos-programming", category: "macOS", heading: "Building a Simple Editing App", author: "Gabriel Theodoropoulos")
                        CardView(image: "flutter-app", category: "Flutter", heading: "Building a Complex Layout with Flutter", author: "Lawrence Tan")
                        CardView(image: "natural-language-api", category: "iOS", heading: "What's New in Natural Language API", author: "Sai Kambampati")
                    }
                    .frame(width: 300)
                }
            }
            Spacer()
        }
    }
}

#Preview {
    ContentView()
}

struct CardView: View {
    var image: String
    var category: String
    var heading: String
    var author: String
    
    var body: some View {
        VStack{
            Image(image)
                .resizable()
                .aspectRatio(contentMode: .fit)
            HStack {
                VStack(alignment: .leading) {
                    Text(category)
                        .font(.headline)
                        .foregroundStyle(.secondary)
                    Text(heading)
                        .font(.title)
                        .fontWeight(.black)
                        .foregroundStyle(.primary)
                        .lineLimit(3)
                        .minimumScaleFactor(0.5) // 自动缩小文字
                    Text(author.uppercased())
                        .font(.caption)
                        .foregroundStyle(.secondary)
                    
                }
                Spacer()
            }
            .padding()
        }
        .clipShape(RoundedRectangle(cornerRadius: 10)) // 剪裁成圆角矩形
        .overlay(RoundedRectangle(cornerRadius: 10)
            .stroke(Color(.sRGB, red: 150/255, green: 150/255, blue: 150/255, opacity: 0.1), lineWidth: 1)
        ) // 描边(就是覆盖一个视图)
        .padding([.top,.horizontal])
    }
}

效果#

作者:Hovey

出处:https://www.cnblogs.com/thankcat/p/18178487

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ThankCAT  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示