swiftUI 知识小结
SwiftUI View
1. Text
文字
2. Image
图片
3.Button(Tap)
按钮 手势
4.Spacer
占位的view
5.Divider
分割线,VStack 里面分割线是水平方向的线
HStack 里面分割线是竖直方向的线
6.Rectangle
矩形View
7.RoundedRectangle
圆角矩形View 圆角等于高度的一半时,矩形两边正好是两个半圆
----------------------------->1<-----------------------------
1.VStack
让View纵向排列
2.HStack
让View水平排列
3.ZStack
垂直于屏幕方向排列
4.Group
分组,显示多个自动预览页的时候,可以把自动预览页放进Group,
5.GeometryReader
一个View,会尽量的扩张自己,尽可能多占空间,可以放View,可以获取自己的宽高
6.ScrollView
可滑动的View
----------------------------->2<-----------------------------
1.List
可以展示多个不同的View,可以用for Each语句铺view
2.ForEach
for循环 遍历数组或者view数组,这些view可以放到List里面
3.NavigationView
导航栏可以进行跳转
4.NavigationLink
导航栏的跳转
5.EmptyView
空View
6.Model presentation
模态推出一个页面
----------------------------->3<-----------------------------
ViewModifier 控件修改器,这是个协议
1.frame
修改View宽高
2.padding
修改View上下左右的间距
3.offset
修改View水平方向或竖直方向偏移量
4.clipShape
把View裁成某个形状 (圆形)
5.clipped
把超出View得部分裁剪掉
6.scaleEffect
实现缩放效果
----------------------------->4<-----------------------------
1.foregroundColor
修改颜色
2.opacity
修改透明度
3.hidden
隐藏View
4.overlay
在View前面添加东西
5.background
在View后面添加东西
----------------------------->5<-----------------------------
1.ListRowInsets
修改一个View在List里面的上下左右间距
2.edgeslgnoringSafeArea
当一个View的一部分处在安全区域的时候,要在安全区域里显示内容可以用~~忽略安全区域
3.navigationBarTitle
设置导航栏的标题
4.navigationBarHidden
设置了标题之后,~~导航栏隐藏才会起作用,
5.navigationBarItems
可以在导航栏里 添加其他的View
6.navigationViewStyle
我们在适配ipad的时候用到,可以使ipad显示的效果和iphone一样
----------------------------->6<-----------------------------
SwiftUI Text
1.font
修改字体、大小
2.bold
字体加粗
3.lineLimit
限制行数
----------------------------->7<-----------------------------
SwiftUI Image
1.resizable
声明图片是可以缩放的
2.scaleToFill
保持原图宽高比填充整个空间
3.scaleToFit
保持原图宽高比适应整个空间
----------------------------->8<-----------------------------
SwiftUI Button
1. buttonStyle
当list里面的一个View有多个button的时候,点击这个View所有的button都会响应,要解决这个问题,我们设置了buttonStyle,设置为BorderlessButtonStyle,其实设置成其他的buttonStyle也可以,我们也可以自定义buttonStyle
----------------------------->9<-----------------------------
SwiftUI -> UIKit
1.UIHostingController
把swiftUI的View封装成UIViewController
----------------------------->10<---------------------------
UIKit -> SwiftUI
1.UIViewRepresentable
协议,至少实现两个函数,创建函数makeUIView和更新函数updateUIView,如果需要可以自定义Coordinator
2.UIViewControllerRepresentable
协议,至少实现两个函数,创建函数makeUIViewController和更新函数updateUIViewController,如果需要可以自定义Coordinator
----------------------------->11<---------------------------
Protocol
1.ObservableObject(@Published)
我们在用到环境对象的时候,环境对象的类型必须遵循这个协议,这个协议规定了类型必须是class类,这个类里面的属性加上@Published修饰词,属性改变用到这个属性的View就会更新
----------------------------->12<---------------------------
语法
1.@State
通常是View自己使用,可以起到更新属性的时候就更新View
2.@Binding
子View使用父View的属性时,需要使用这个修饰词可以起到更新属性的时候就更新View,父View和子View的属性绑定在一块,一个改变另一个也会改变,同时更新View
3.@Environment
4.@EnvironmentObject
必须遵循ObservableObject协议,协议详情请看12页,需要在多个页面共享的话 用这个修饰,声明之后不需要赋值,因为它会从父View里面找相应的值,如果找不到app会闪退
5.@ObservedObject
必须遵循ObservableObject协议,协议详情请看12页,复杂类型属性可以使用这个
----------------------------->13<---------------------------
动画
1.publicfuncwithAnimation(_animation:Animation? = .default,_body: ()throws->Result)rethrows->Result
使用:
withAnimation { () -> Result in
<#code#>
}
2.@inlinable public func animation(_ animation: Animation?) -> some View
使用:
{
}.animation(<#T##animation: Animation?##Animation?#>)