SwiftUI开发教程系列 - 第6章:SwiftUI的高级布局技巧

SwiftUI 的布局系统让我们在设计响应式和动态布局时更加便捷。基础的布局已经在第二章讲述过来,所以这一章,我们将深入布局系统,介绍如何在复杂场景中运用 SwiftUI 的布局能力,包括利用 GeometryReader 实现自适应布局,探讨高级容器 LazyVGrid 和 LazyHGrid 的实际应用,以及如何创建自定义布局容器。

6.1 利用 GeometryReader 实现自适应布局

在复杂的界面布局中,我们经常需要根据设备尺寸调整界面结构,而 GeometryReader 为我们提供了获取父视图尺寸的能力。通过 GeometryReader,可以在小屏幕设备上创建单列布局,而在大屏幕上自动适配多列布局。

示例:自适应网格布局

struct AdaptiveGrid: View {
   
   
    let items = Array(1...50)
    
    var body: some View {
   
   
        GeometryReader {
   
    geometry in
            let columns = geometry.size.width > 600 ? 4 : 2
            
            LazyVGrid(columns: Array(repeating: .init(.flexible()), count: columns)) {
   
   
                ForEach(items, id: \.self) {
   
    item in
                    Text("Item \(item)")
                        .frame(width: geometry.size.width / CGFloat(columns) - 10, height: 50)
                        .background(Color.blue.opacity(0.5
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁代码

如果帮助了你,不妨也帮助我一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值