当前位置: 首页 > news >正文

建设网站需要什么要求江苏定制网站建设费用

建设网站需要什么要求,江苏定制网站建设费用,wordpress不让收录文件是哪个,德阳房产网站建设其它相关内容请见​​虚拟现实(VR)/增强现实(AR)visionOS开发学习笔记​​ SwiftUI是一套新框架#xff0c;因此并没有包含我们构建专业应用所需的所有工具。这意味着我们会需要求助于UIKit#xff08;移动设备#xff09;和AppKit#xff08;Mac电脑#xff09;等原…其它相关内容请见​​虚拟现实(VR)/增强现实(AR)visionOS开发学习笔记​​ SwiftUI是一套新框架因此并没有包含我们构建专业应用所需的所有工具。这意味着我们会需要求助于UIKit移动设备和AppKitMac电脑等原生框架所提供的工具。 我们已介绍过UIKit。它是一套SwiftUI在后台实现用于创建大部分视图和控件的框架。有些UIKit类用于运行应用​​UIApplication​​​、加载图片​​UIImage​​​、管理设备​​UIDevice​​​及窗口​​UIWindow​​​而另一些定义用于设置应用和场景​​UiApplicationDelegate​​​和​​UIWindowSceneDelegate​​​的代理。当然该框架提供了我们创建界面所需的所有工具包括两个创建和管理视图的基本类称为​​UIView​​​和​​UIViewController​​。 最后面这两个类​​UIView​​​和​​UIViewController​​是在我们需要对SwiftUI界面添加UIKit特性时需要实现的类。UIView的子类用于在屏幕上显示信息比如标签和图像以及创建控件比如按钮、滑块和开关。而​​UIViewController​​类的子类用于展示视图及包含处理它们的值和与用户交互的必要功能。为了将这些工具集成到SwiftUI界面中SwiftUI框架定义了两个协议​​UIViewRepresentable​​​和​​UIViewControllerRepresentable​​。 Representable视图 ​​UIViewRepresentable​​​协议定义了一结构体作为​​UIView​​类或其子类所创建对象的一层封装wrapper。实现这一协议的结构体可表示SwiftUI界面中的一个UIKit视图。创建及管理UIKit视图结构体必须要实现如下的方法。 ​​makeUIView(context: Context)​​该方法创建一个UIKit视图并返回。​​context​​​参数是对提供视图状态信息的​​UIViewRepresentableContext​​类型结构体的引用。​​updateUIView(UIViewType, context: Context)​​该方法通过一个绑定属性使用SwiftUI界面所提供的信息更新UIKit视图。第一个参数是对UIKit视图的引用​​context​​​参数是对提供视图状态信息的​​UIViewRepresentableContext​​类型结构体的引用。​​dismantleUIView(UIViewType, coordinator: Coordinator)​​该类型方法为释放视图做准备工作。第一个参数是UIKit视图的指针​​coordinator​​参数是将值发回SwiftUI界面的对象。​​makeCoordinator()​​该方法创建的对将UIKit视图的信息传回给SwiftUI界面。 要在SwiftUI接口中包含一个​​UIView​​​对象或其子类所创建对象我们需要定义一个实现​​UIViewRepresentable​​​协议的结构体并实现上述的方法。​​makeUIView()​​​和​​updateUIView()​​​方法是必选的。在​​makeUIView()​​方法中我们必须创建并返回一个UIKit视图实例​​updateUIView()​​法用于使用SwiftUI界面中所获取的值来更新视图。 下例中创建了一个蓝色背景的UIKit视图并在SwiftUI视图中包含它。只需要用​​makeUIView()​​方法创建UIKit视图但同时也要实现​​updateUIView()​​方法因为协议有相应要求。 示例16-1准备一个供SwiftUI使用的UIKit视图 struct MyCustomView: UIViewRepresentable {func makeUIView(context: Context) - some UIView {let view UIView()view.backgroundColor UIColor(.blue)return view}func updateUIView(_ uiView: UIViewType, context: Context) {} } 在每次创建新的​​MyCustomView​​​结构体实例时调用​​makeUIView()​​​方法。在该方法中我们创建一个​​UIView​​​视图将背景色设置为蓝色并返回。因此每次我们创建​​MyCustomView​​​结构体实例的时候会创建一个​​UIView​​并添加到SwiftUI实例之中如下例所示。 示例16-2在SwiftUI视图中显示UIKit视图 struct ContentView: View {var body: some View {VStack {MyCustomView().frame(width: 200, height: 150).padding()Spacer()}} } ​​representable​​视图默认为弹性大小但可以通过SwiftUI修饰符进行修改。本例中我们使用frame()修饰符赋了固定的宽和高。 图16-1SwiftUI界面中的UIKit视图 ​​UIView​​​对象创建一个空视图但我们也可以实现接收其它用户输入的视图如文本框、开关等。我们使用​​updateUIView()​​方法将SwiftUI视图中的值传递给UIKit视图。但如果想将UIKit视图中的值传递给SwiftUI界面则需要实现​​makeCoordinator()​​​方法。在这个方法中我们必须创建一个​​coordinator​​​对象实例并返回。​​coordinator​​是一个可将UIKit视图中的信息回发给Swift界面的对象通常通过修改绑定属性实现。如何处理这些值取决于我们操作的UIkit视图的类型。例如​​UITexView​​视图创建一个用户可输入多行文本的输入框和SwiftUI中的​​TextEditor​​​视图一样。这个视图通过调用代理方法上报改变。因此要获取用户在​​UITexView​​中插入的文本并在SwiftUI中进行处理我们需要创建一个实现​​UITextViewDelegate​​​协议的​​coordinator​​​类并实现其方法。下例演示了如何创建一个​​UIViewRepresentable​​结构体来操作这个类。 示例16-3对SwiftUI视图发送和接收值 import SwiftUIstruct TextView: UIViewRepresentable {Binding var input: Stringfunc makeUIView(context: Context) - UITextView {let view UITextView()view.backgroundColor UIColor.yellowview.font UIFont.systemFont(ofSize: 17)view.delegate context.coordinatorreturn view}func updateUIView(_ uiView: UITextView, context: Context) {uiView.text input}func makeCoordinator() - CoordinatorTextView {return CoordinatorTextView(input: $input)} }class CoordinatorTextView: NSObject, UITextViewDelegate {Binding var inputCoordinator: Stringinit(input: BindingString) {self._inputCoordinator input}func textViewDidChange(_ textView: UITextView) {inputCoordinator textView.text} } 本示例创建了一个名为​​TexView​​​的​​UIViewRepresentable​​​结构体。结构体中有一个名为​​input​​​的​​Binding​​属性接收值并传递给SwiftUI视图。在​​TexView​​​结构体定义的下面我们定义了一类名为​​CoordinatorTextView​​​的类。这是我们视图的​​coordinator​​任务是将值发回给SwiftUI视图。为此我们通过一个关联​​TexView​​​结构体中定义的input属性的​​Binding​​​属性对其初始化然后实现一个代理方法在用户插入或删了字符时执行。该方法获取输入框中的当前文本因此我们将其赋值给那个​​Binding​​属性发回到SwiftUI视图。​​UIViewRepresentable​​​结构体初始化时。​​CoordinatorTextView​​​对象通过​​makeCoordinator()​​方法创建因而该结构体在一开始就可接收和发送值了。 SwiftUI界面中的视图实现和之前相同。只需对存储添加一个​​State​​​属性将值传递给​​input​​属性。 示例16-4对UIKit视图接收和发送值 struct ContentView: View {State private var inputText: String Initial textvar body: some View {VStack {HStack {Text(inputText)Spacer()Button(Clear) {inputText }}TextView(input: $inputText)}.padding()} } 以上视图定义了一个名为​​inputText​​​的​​State​​​属性、一个显示其值的​​Text​​​视图、一个用空字符串替换当前值的按钮以及自定义​​TextInput​​​视图的一个实例。该视图获取到​​inputText​​​属性的指针与​​representable​​视图中的输入属性相关联这样便可以来回传递值 。 用户在编辑器中输入或删除字符时​​representable​​​视图调用​​coordinator​​​中的​​textViewDidChange()​​​方法该方法将文本视图中的当前值赋给​​inputCoordinator​​​属性也就赋给了​​input​​​属性。这意味着值在​​State​​​属性中可用 并且​​Text​​​视图可将其显示到屏幕上。而在用户点击​​Clear​​​按钮时我们将空字符串赋值给​​State​​​属性系统执行​​representable​​​视图中的​​updateUIView()​​​方法关联​​State​​​属性的​​Binding​​属性的值被赋给了视图文本视图被清除。 图16-2SwiftUI界面中的​​UITexView​​视图 ✍️跟我一起做创建一个多平台项目。根据示例16-3中的代码创建一个名为​​TextView.swift​​​的文件。根据示例16-4中的代码更新​​ContextView​​​视图。插入一段文本。应该会看到顶部的文本发生了变化。点击​​Clear​​按钮。会看到文本视图及顶部的视图中的文本被删除。 注意​​UIViewRepresentable​​结构体可表示任意UIKit视图。实现会取决于想使用的视图。我们会在后续的章节中看到更多的示例。要学习UIKit及UiKit视图可参阅UIKit for MasterMinds等书。 Representable视图控制器 ​​UIViewControllerRepresentable​​​协议定义一个结构体作为对​​UIViewController​​类及子类所创建对象的封装。该类展示一个可包含其它视图的视图为窗口或整个屏幕定义界面类似SwiftUI文件中所定义的视图。实现​​UIViewControllerRepresentable​​协议的结构体可在一个SwiftUI界面中展示这些视图控制器。创建及管理这个视图控制器结构体必须实现如下方法。 ​​makeUIViewController(context: Context)​​该方法创建一个UIKit视图控制器并返回。​​context​​​参数是​​UIViewControllerRepresentableContext​​类型结构体的一个指针提供视图控制器状态的相关信息。​​updateUIViewController(UIViewControllerType, context: Context)​​该方法使用SwiftUI界面所提供的信息更新UIKit视图控制器。第一个参数是UIKit视图控制器的指针​​context​​​参数是​​UIViewControllerRepresentableContext​​类型结构体的一个指针提供视图控制器状态的相关信息。​​dismantleUiViewController(UIViewControllerType, coordinator: Coordinator)​​​该类型方法为释放视图控制器做准备。第一个参数是UIKit视图控制器的指针​​coordinator​​参数是是将值发回SwiftUI界面的对象。​​makeCoordinator()​​该方法创建将UIKit视图控制器信息传回SwiftUI界面的对象。 UIKit视图控制器由​​UIViewController​​的子类创建。文件通过File菜单创建 但选取UIKit子类的选项称为Cocoa Touch Class。选择该选项后Xcode会显示一个可输入文件名称的窗口并可选择所创建子类相应的父类。本例中我们创建了一个继承​​UIViewController​​​类的​​DetailViewController​​类。 示例16-5创建一个UIKit视图控制器 import UIKitclass DetailViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()let label UILabel()label.frame CGRect(x: 20, y: 16, width: 250, height: 30)label.font UIFont.systemFont(ofSize: 30)label.text Hello World!view.addSubview(label)} } 在初始化视图控制器类时它创建一个表示界面的视图将其赋值给​​view​​​属性并调用​​viewDidLoad()​​​方法来告诉我们的代码视图已就绪。在这个方法中我们可以执行所有必要的任务来初始化视图。在本例中我们创建一个​​UILabel​​对象来在屏幕上显示文本。该对象类似SwiftUI的​​Text​​​视图但需要做一些配置。在我们的例子中通过将​​CGRect​​​值赋给​​frame​​​属性来为其设置位置和大小字体大小定义为30像素赋值给要显示的文本通过​​addSubview()​​方法将其添加给视图控制器的视图。 现在有了视图控制器我们需要创建一个​​representable​​视图将其转为SwiftUI视图如下例所示 示例16-6为UIKit视图控制器创建​​representable​​视图 import SwiftUIstruct MyViewController: UIViewControllerRepresentable {func makeUIViewController(context: Context) - DetailViewController {let controller DetailViewController()return controller}func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {} } ​​UIViewControllerRepresentable​​​协议类似​​UIViewRepresentable​​​。我们必须定义一个实现此协议的结构体然后添加创建和更新视图所需的方法。在本例中我们仅定义了​​makeUIViewController()​​因为只需要创建视图控制器的实例来在屏幕上进行显示。以下的SwiftUI视图在用户点击按钮时在​​NavigationStack​​视图中加载该视图控制器。 图16-7通过SwiftUI视图加载一个UIKit视图控制器 struct ContentView: View {var body: some View {NavigationStack {VStack {NavigationLink(Open UIKit View, destination: {MyViewController()}).buttonStyle(.borderedProminent)Spacer()}.padding()}} } 以上视图包含一个加载​​MyViewController​​​结构体实例的​​NavigationLink​​视图因而可以从初始视图导航至结构体所创建的视图控制器和常规SwiftUI视图的操作一样。 图16-3SwiftUI界面中的UIKit视图控制器 ✍️跟我一起做选择屏幕顶部菜单中的File选项新建一个文件。点击iOS版块中的Cocoa Touch Class图标创建一个UIKit文件。在SubClass选项中选择​​UIViewController​​​。插入名称​​DetailViewController​​并点击Next进行保存。使用示例16-5中的代码更新​​DetailViewController​​​。用示例16-6中的代码创建一个名为​​MyViewController.swift​​​的文件。使用示例16-7中的代码更新​​ContentView​​视图。运行应用点击按钮打开UIKit视图控制器。 代码请见​​GitHub仓库​​
http://www.hkea.cn/news/14568144/

相关文章:

  • 怎样加入网站跨国网站怎么做
  • 济南网站制作公司哪家好网站域名注册流程
  • 非盈利性备案网站 淘宝客网站视频模板网
  • da面板做两个网站简约网站内容布局
  • 厦门模板建站系统网站开发项目挣钱吗
  • 怎么制作网站源码苏州网页设计方法
  • 做图去哪个网站找素材专门做鞋子的网站有哪些
  • 酒仙网网站推广方式类似设计师联盟的网站
  • 网站建设什么原因最主要制作个人网站实例
  • 优秀网站建设评选活动海报汕头seo优化项目
  • 网站开发 需求调研做网站ui
  • 福田做网站哪家专业怎么建立一个网站让外国人浏览
  • 做网站哪个软件好wordpress分类目录前缀
  • 中文网站站内优化怎么做网站建设收费分几次
  • 网站seo优化书籍怎样制作网页链接教程
  • 做网站 淘宝烟台网站建设seo
  • 广州商城建站系统外贸网站建设网站
  • 怎样建立一个企业网站天津手网站开发
  • 网站建设的技术亮点酒店协会网站集静态模板
  • 网站seo优化加推广支付宝小程序代理
  • 邮件模板网站怎么做好手机网站开发
  • 网页制作与网站设计思路wordpress电影站
  • 做网站教程流程网络营销策略4p4c
  • 微信官方网站首页域名服务费多少钱一年
  • 手机微网站第二年续费吗哪个平台推广效果最好
  • 郑州做网站公做的最好的相亲网站有哪些
  • 无锡网站维护公司哪个网站百度收录快
  • 建设网站基本思路网络广告投放平台
  • 网站域名会赠送几个邮箱企业网站建设绪论
  • 网站制作 深圳变性人做网站