SwiftUI2.0更新内容二

本文介绍如何在SwiftUI中使用ColorPicker进行颜色选择,并展示如何创建颜色选择界面,使文字颜色随选中颜色变化。同时,探讨了在SwiftUI中实现地图视图(MapView)的方法,包括定义坐标区域、显示地图以及附加自定义图标。
  1. ColorPicker
    颜色选择模块,用于选择颜色,或者自己取色,配色等等。
    新建SwiftUI文件,命名为chooseColor,加入如下代码
struct chooseColor: View {
    @State private var textColor = Color(.sRGB, red: 0.98, green: 0.9, blue: 0.2)
		 var body: some View {
           VStack {
               ColorPicker("挑选颜色", selection: $textColor)
               Text("\(textColor.description)")
                .foregroundColor(textColor)
           }   
       }
}

当选取颜色变化后,Text中文本文字显示选取的颜色名字,并且文字颜色变成所选中的颜色。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不提供透明度选择,则可以这样初始化ColorPicker

ColorPicker("挑选颜色", selection: $textColor, supportsOpacity: false)
  1. toolbar() modifier
    为NavigationView通过toolbar()增加ToolbarItem
    代码如下:
struct toolbarWithbutton: View {
    @State private var yourText = "What's up!"
    var body: some View {
        NavigationView { 
            Text(yourText)
                .padding()
                .navigationTitle("SwiftUI")
                .toolbar {
                    ToolbarItem(placement: .bottomBar) {
                        Button("First") {
                            yourText = "First Pressed"
                                }
                        Button("Second") {
                             yourText = "Second Pressed"
                                }
                    }
                }
        }
    }
}

在视图底部显示2个button类型ToolbarItem,当点击button时,改变文字
在这里插入图片描述
这样修改代码,可以水平放置button

.toolbar {
                    ToolbarItem(placement: .bottomBar) {
                        HStack {
                            Button("First") {
                                        yourText = "First Pressed"
                            }
                            Button("Third"){
                                yourText = "Third Pressed"
                            }
                        }

预览视图
在这里插入图片描述
3. MapView
终于可以不用从UIkit中移植地图了。

struct ShowMapView: View {
    
    @State private var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 25.89883765, longitude: 109.21606928), span: MKCoordinateSpan(latitudeDelta: 0.02, longitudeDelta: 0.02))
     var body: some View {
            VStack{
            Map(coordinateRegion: .constant(region))
            Image(systemName: "circle")
                .resizable()
                .frame(width: 250, height: 250)
                .clipShape(Circle())
                .overlay(Circle().stroke(Color.white, lineWidth: 4))
                .shadow(radius: 10)
                .padding(.top, -130)
            }  
        }
}

定义了一个景点经纬度,以及范围。没有配置地图注释。Map调用时还有几种初始化方式,带注释,轨迹等等。目前还搞清楚怎么操作,继续研究…
在地图上附加了系统自带circle图,可以考虑换成景点图片,就好看了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值