SwiftU的组件 - TabView

本文介绍了如何在SwiftUI中使用TabView组件,分别展示了底部导航栏风格和滑块切换的实现方法,适合初学者了解SwiftU中的TabView用法。
摘要由CSDN通过智能技术生成

SwiftU的组件 - TabView

记录一下SwiftU的组件 - TabView的两种style分别的使用方式


import SwiftUI

struct TabViewBootCamp: View {
    @State var selectedIndex = 0
    var body: some View {
       
        NavigationView {
            TabView(selection: $selectedIndex) {
                HomeView(selectedIndex: $selectedIndex)
                Text("Browse".uppercased())
                    .tabItem {
                            Image(systemName: "globe")
                        Text("Browse")
                    }
                    .tag(1)
                Text("Profile".uppercased())
                    .tabItem {
                            Image(systemName: "person.fill")
                        Text("Profile")
                    }
                    .tag(2)
            }
            .navigationTitle("TabViewBootCamp")
            .navigationBarTitleDisplayMode(.inline)
        }
    }
}

#Preview {
    TabViewBootCamp()
}

struct HomeView: View {
    @Binding var selectedIndex: Int
    let icons = ["heart.fill", "globe", "house.fill", "person.fill"]
    var body: some View {
        VStack{
            Button("jump to Brower") {
                selectedIndex = 1
            }
            /// 利用tabbarView制作一个滑块
            TabView {
                ForEach(icons, id: \.self) { icon in
                    Image(systemName: icon)
                        .resizable()
                        .scaledToFit()
                }
                
            }
            .frame(height: 300)
            .tabViewStyle(PageTabViewStyle())
            .background(
                RadialGradient(colors: [.red, .blue], center: .center, startRadius: 50, endRadius: 300)
            )
        }
        .tabItem {
            Image(systemName: "house.fill")
            Text("Home")
        }
        .tag(0)
    }
}

第一种是底部导航栏 , 第二种是制作一个滑块控件对精度要求不高的情况下 非常方便
请添加图片描述

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于在QML中使用TabView进行动画效果的问题,可以尝试使用动画属性来实现。以下是一个简单的示例: ``` import QtQuick 2.15 import QtQuick.Controls 2.15 TabView { width: 400 height: 300 Tab { title: "Tab 1" Rectangle { color: "red" } } Tab { title: "Tab 2" Rectangle { color: "blue" } } Tab { title: "Tab 3" Rectangle { color: "green" } } // 添加一个动画属性 property real animationValue: 0 // 当动画值发生变化时,更新TabView的contentX属性,实现平滑滑动效果 onAnimationValueChanged: { tabView.contentX = animationValue * -tabView.width } // 在TabView上添加鼠标区域,当鼠标在区域内滑动时,触发动画效果 MouseArea { anchors.fill: parent onPositionChanged: { // 根据鼠标移动的距离计算动画值 var distance = (mouseX - startX) / parent.width animationValue = distance } onPressed: startX = mouseX onReleased: { // 根据动画值确定最终显示的Tab页 var newIndex = Math.round(animationValue) tabView.currentIndex = Math.max(0, Math.min(tabView.count - 1, newIndex)) animationValue = tabView.currentIndex } onExited: { // 处理鼠标移出区域时的情况 animationValue = tabView.currentIndex } } } ``` 在这个示例中,我们通过添加一个动画属性`animationValue`来控制TabView的内容位置。当鼠标在区域内滑动时,我们根据鼠标移动的距离计算动画值,并将其应用于`contentX`属性以实现平滑滑动效果。当鼠标释放时,我们根据动画值确定最终显示的Tab页,并将当前索引设置为该值。 请注意,这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。希望对您有帮助!如有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值