首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Swift社区

    SwiftUI 中掌握 ScrollView 的使用:滚动可见性

    @State private var visible: [Int] = [] var body: some View { ScrollView { LazyVStack identifiers } .onChange(of: visible) { print(visible) } }}如上例所示,我们在懒加载栈(LazyVStack @State private var visible: [Int] = [] var body: some View { ScrollView { LazyVStack ContentViewScrollView 和 LazyVStack:使用 ScrollView 包裹一个 LazyVStack,在其中放置 1 到 99 的数字。 scrollTargetLayout:在 LazyVStack 上应用 scrollTargetLayout 视图修饰符,以允许 ScrollView 针对栈的子视图进行目标识别。

    4.2K21编辑于 2024-09-25
  • 来自专栏肘子的Swift记事本

    SwiftUI 视图的生命周期研究

    比如在 List 和 LazyVStack 中,Cell 视图在创建之后即使滚动出屏幕不参与布局与渲染,但 SwiftUI 仍会保留这些视图的数据,直到 List 或 LazyVStack 被销毁。 视图进入屏幕后触发 onAppear,滚动出屏幕后会触发 onDisappear,在 Cell 视图的存续期内可以多次触发 onAppear 和 onDisappear ScrollView { LazyVStack •在 List 和 LazyVStack 中,SwiftUI 出于效率的考虑,即使 Cell 视图移出显示范围,它的视图仍将保留在视图值树上(视图仍将存续)。 另外,由于 List 和 LazyVStack 的布局逻辑不同(List 的容器高度是固定的,LazyVStack 的容器高度是不固定的,向下预估的),两者触发 onDisappear 的时机点也不同。 List 是上下两侧都会触发,LazyVStack 只有下方会触发。

    5.7K30编辑于 2022-07-28
  • 来自专栏肘子的Swift记事本

    只在视图 Body 中生存的变量

    image-20230321203001315 假如,我们将 VStack 换成 List 或 LazyVStack 呢? List { // LazyVStack 或其他惰性容器 var offset = 0 ForEach(items) { item in // 判断当前是否为首个数据 List { // 或 LazyVStack var offset = 0 ForEach(items) { item in // 判断当前是否为首个数据

    1.4K10编辑于 2023-05-18
  • 来自专栏肘子的Swift记事本

    在 SwiftUI 中创建自适应的程序化导航方案

    有得必有失 —— NavigationSplitView + LazyVStack尽管 List 使用起来很简单,但也有一些不足之处,其中最重要的是无法自定义选中的状态。 那么能否在导航列中使用 VStack 或 LazyVStack 实现程序化导航呢? NavigationSplitView(columnVisibility: $visible, sidebar: { ScrollView { LazyVStack @ObservedObject var store: AdaptiveStore var body: some View { ScrollView { LazyVStack

    5.6K30编辑于 2023-03-08
  • 来自专栏Swift社区

    如何使用 SwiftUI 中 ScrollView 的滚动偏移

    var body: some View { ScrollView { LazyVStack { ForEach(0..<100) { index var body: some View { VStack { ScrollView { LazyVStack {

    4.5K10编辑于 2024-09-18
  • 来自专栏肘子的Swift记事本

    深入了解 SwiftUI 5 中 ScrollView 的新功能

    @State private var isEnabled = true ScrollView { LazyVStack { ForEach(items) { item in LazyVStack { ForEach(items) { item in CellView(width: 200, height: 140) .idView Toggle("Layout enable", isOn: $isEnabled).padding() ScrollView { LazyVStack

    3K20编辑于 2023-07-08
  • 来自专栏Swift社区

    从技术博客到个人IP矩阵:全面攻略与实战示例

    @State private var visible: [Int] = [] var body: some View { ScrollView { LazyVStack

    65910编辑于 2024-07-25
  • 来自专栏肘子的Swift记事本

    Ask Apple 2022 与 SwiftUI 有关的问答(下)

    目前,我总是去找 LazyVStack 来代替。A:有多种修饰器可以实现这个功能:listRowSeparator, listRowInsets。不支持整个列表填充,请对此提出反馈。 这意味着我们不能使用 LazyVStack,或任何其他将选择与详细视图绑定的自定义视图。有扩展这个功能的计划吗?A:在 iOS 16.1 中,你可以在侧边栏里放一个。 NavigationSplitView { LazyVStack { NavigationLink("link", value: 213) } .navigationDestination

    19.8K30编辑于 2023-03-08
  • 《突破启动瓶颈:Swift构建iOS应用时界面加载的深度优化策略》

    可通过 LazyVStack / LazyHStack 实现视图的按需加载,配合 onAppear 修饰符在视图即将显示时才加载数据。

    46210编辑于 2025-07-10
  • 来自专栏肘子的Swift记事本

    期待与失望的循环:苹果的 AI 困境与韧性|肘子的 Swift 周报 #074

    巧用视图复用,提升 SwiftUI 滚动列表性能 [8] SwiftUI 提供了List、LazyVStack等惰性容器,但在处理大规模数据时,这些组件的性能仍然存在局限性。

    69900编辑于 2025-03-11
  • 来自专栏肘子的Swift记事本

    肘子的 Swift 周报 #023 | 为应用配备隐私清单

    https://twitter.com/fatbobman "Fatbobman( 东坡肘子 "Fatbobman( 东坡肘子)")") 在 SwiftUI 的框架中,惰性布局容器,如 List 和 LazyVStack

    75810编辑于 2024-03-19
  • 来自专栏肘子的Swift记事本

    如何判断 ScrollView、List 是否正在滚动中

    对于 List、ScrollView + LazyVStack( LazyHStack )这类的组合,需要为每个子视图都添加一个 scrollSensor。

    5.2K40编辑于 2023-03-08
  • 来自专栏肘子的Swift记事本

    Ask Apple 2022 与 SwiftUI 有关的问答(上)

    对于非惰性视图(如 LazyVStack ),一旦 hosting controller 的视图被初始化,onAppear 将被调用。

    16K20编辑于 2023-03-08
  • 来自专栏Swift社区

    SwiftUI 布局协议 - Part 1

    请注意至少到现在,布局协议不能创建懒加载容器,比如 LazyHStack 或 LazyVStack。懒加载容器是指那些只在滚入屏幕时渲染,滚出到屏幕外就停止渲染的视图。

    3.9K10编辑于 2022-12-12
领券