助你打通SwiftUI任督二脉

SwiftUI简单基础知识学习 当我们谈论SwiftUI的简介和基础语法时,首先需要了解SwiftUI是什么以及它的特点。SwiftUI是苹果公司推出的一种用于构建应用程序用户界面的框架。它是基于Swift语言的,具有声明式的语法,可以让开发者更简单、更高效地创建用户界面。下面是一些SwiftUI的基础语法和概念:SwiftUI的核心构建块是视图(View),它代表了应用程序的用户界面组件。视图可以是简单的,比如文本标签(Text)、按钮(Button),也可以是复杂的,比如列表视图(List)或者表单视图(Form)。 阅读详情

序言

开年的第一篇文章,今天分享的是SwiftUI,SwiftUI出来好几年,之前一直没学习,所以现在才开始;如果大家还留在 ​​iOS​​ 开发,这们语言也是一个趋势; 目前待业中.... 不得不说已逝的2023年,大家开始都抱着一解封,经济都会向上转好,可是现实不是我们想象那样;目前我也在学习 ​​SwiftUI​​,并且努力找工作中....;至于 ​​2024​​ 年经济如何,咱们作为老百姓在大环境和全球经济影响下;坦然面对,提升自己。 这里不得不说国人坚韧不拔的精神。“卷” -- 努力吧Coding人

SwiftUI体验

Xcode创建项目之后出现工程默认创建的UI界面;如下

一开始心里对自己说:

​​"SwiftUI作为iOS开发新的UI体系,为啥初创的项目这么多代码,给初学者看到,一种压迫感,心想这语法好复杂,不想学了"​​;不管你是不是这样心里,我刚开始看见,这么一坨代码,没什么心思,于是索性删掉;按自己能理解学习的方式来操作;于是做了简化:

import SwiftUI
import SwiftData

struct ContentView: View {
   
    var body: some View {
        Text("hello,word”)
    }
}

#Preview {
    ContentView()
        .modelContainer(for: Item.self, inMemory: true)
}

关键字 some

关键字some啥玩意儿,完全陌生;先看看View;点击进入源码结构查看:

@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View {

    /// The type of view representing the body of this view.
    ///
    /// When you create a custom view, Swift infers this type from your
    /// implementation of the required ``View/body-swift.property`` property.
    associatedtype Body : View

    @ViewBuilder @MainActor var body: Self.Body { get }
}

一堆英文注解估计大家不喜欢看,我就没贴出来了;简单来说:
​​View​​ 是一个泛型协议,它定义了所有视图类型需要遵循的接口,通过​​some​​修饰;​​表示​​ "我返回一个满足​​View​​ 协议的某种类型"。​​some​​关键字告诉 Swift,虽然我们知道​​body​​必须返回一个​​View​​,但我们不确定具体是哪种 ​​View​​(例如,​​Text​​, ​​Image​​, ​​VStack​​ 等)。

协议里有一个​​associatedtype​​,​​body​​,其实这种协议就是当作约束形式使用;只要遵守这种协议编译器每次闭包中返回的一定是一个确定,遵守​​View​​协议的类型。

那么苹果工程师利用Swift5.1 Opaque return types特性,开发者提供了一个灵活的开发模式,抹掉了具体的类型,不需要修改公共API来确定每次闭包的返回类型,也降低了代码书写难度。(学学苹果那些大神思想,不错)

在来看看Preview

struct ContentView_Previews:PreviewProvider{
    static var previews: some View{
        ContentView()
        
    }
}

​​PreviewProvider​​就一个协议类,它的额作用提供swiftUI不用运行,就能直接看到UI渲染变化,我觉得这个挺好,减少开发人员对UI运行测试次数和时间,而​​previews​​就是一个静态属性,返回一个 ​​View​​ 对象,用于在预览面板中展示。

@State属性包装器

​​@State属性包装器​​解决UI界面上,数据同步以及及时刷新的功能。一般来说数据更新完,界面 UI 同时更新。在 SwiftUI里面,视图中声明的任何状态、内容和布局,源头一旦发生改变,会自动更新视图,因此,只需要一次布局,这个时候出现了​​@State​​,它来解决与UI之间数据状态问题。

它的概念就是:​​@State​​ 是一个属性包装器(property wrapper),用于声明状态属性(state property)
当状态属性发生变化时,SwiftUI 会自动更新视图以反映最新的状态。

属性的值被存储在特殊的内存区域中,这个区域与 View struct 是隔离的 至于被它修饰的属性内存存储与分布现在无从得知,还没学习到那么深入,这事儿慢慢来,不是一天两天的,先上个代码看看它怎么使用的:

import SwiftUI

struct StateBootcamp: View {
    
    @State var bgkColor:Color = Color.blue
    @State var cut:Int = 0
    
    var body: some View {
        
        ZStack{
            
            bgkColor
                .ignoresSafeArea(.all)
            
            VStack(spacing: 20){
                
                Text("Hello, World!”)
                    .font(.title)
                
                Text("count:\(cut)”)
                    .font(.largeTitle)
                
                HStack(spacing: 20){
                    Button("Button01") {
                        cut+=1
                        bgkColor = Color.red
                    }
                    .font(.title)
                    .foregroundColor(.white)
                    
                    Button("Button02") {
                        cut-=1
                        bgkColor = .purple
                    }
                    .font(.title)
                    .foregroundColor(.white)
                }
                Button("默认”){
                    cut=0
                    bgkColor = .blue
                }
                .font(.title)
                .foregroundColor(.white)
            }
        }
    }
}

#Preview {
    StateBootcamp()
}

其实一看代码,就一幕了然,知道它的使用与作用;如果你写过swift代码,这些东西很好理解,但是只会OC,那么我建议你学习下swift;在来看swiftUI语法糖才更好理解。

在看看源码:

@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
@frozen @propertyWrapper public struct State<Value> : DynamicProperty {
    public init(wrappedValue value: Value)
    public init(initialValue value: Value)
    public var wrappedValue: Value { get nonmutating set }
    public var projectedValue: Binding<Value> { get }
}


@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
extension State where Value : ExpressibleByNilLiteral {

    /// Creates a state property without an initial value.
    ///
    /// This initializer behaves like the ``init(wrappedValue:)`` initializer
    /// with an input of `nil`. See that initializer for more information.
    @inlinable public init()
}

可以看到​​State​​是一个结构体,由​​@propertyWrapper​​包装的。​​@propertyWrapper​​是属性包装器。property wrapper 做的事情大体如下:

-   为底层的存储变量`State<Int>`自动提供一组 **getter** 和 **setter** 方法,结构体内保存了`Int`的具体数值;

-   在 body 首次求值前,将`State<Int>`关联到当前`View`上,为它在堆中对应当前`View`分配一个存储位置。

-   为`@State`修饰的变量设置观察,当值改变时,触发新一次的`body`求值,并刷新 UI。

SwiftUI基础组件

​​Spacer垫片​​:先贴贴代码

import SwiftUI

struct SpacerBootcampDemo: View {
    var body: some View {
        Text("Spacer UP”)
            .font(.largeTitle)
        
        Spacer()
            .frame(width: 37)
            .background(.blue)
        
        Text("Spacer Down”)
            .font(.largeTitle)
        
    }
}

#Preview {
    SpacerBootcampDemo()
}

在看看效果图:

总结:Spacer 是一个灵活的空间视图,它的主要作用是在布局中自动调整自身的高度和宽度,以填满特定的空间;简单来说,它就是一个垫片,调整自身视图的高度,如果它周围有其他视图,也会受到Spacer影响。

​​ScrollView​​ 如果你之前使用UIkit框架开发,在用SwiftUI,一下有点不适应,代码和之前的 ​​UIkit​​ 开发模式不太一样,但是大大缩短UI编写时间;先上代码:

import SwiftUI

struct ScollViewBootcamp: View {
    
    var body: some View {
        
        ScrollView{
            LazyVStack{
                ForEach(0..<20){
                    (idx) in
                    
                    VStack {
                        
                        Text("Hello, World!”)
                            .font(.title)
                            .foregroundStyle(.white)
                            .frame(width: UIScreen.main.bounds.width-20,height: 350)
                            .background(Color.init(cgColor: CGColor(red: CGFloat.random(in: 0..<215)/255.0, green: CGFloat.random(in: 0..<235)/255.0, blue: CGFloat.random(in: 0...247)/255.0, alpha: 0.9)))
                            .clipShape(RoundedRectangle(cornerRadius: 10))
                        
                        Rectangle()
                            .fill(Color.init(cgColor: CGColor(red: CGFloat.random(in: 0...187)/255.0, green: CGFloat.random(in: 0..<210)/255.0, blue: CGFloat.random(in: 0...237)/255.0, alpha: 0.9)))
                            .frame(width: UIScreen.main.bounds.width-20,height: 530)
                            .clipShape(RoundedRectangle(cornerRadius: 10))
                        
                        
                        ScrollView(.horizontal,showsIndicators: false,content: {
                            LazyHStack{
                                ForEach(0..<10){
                                    idx in
                                    Rectangle()
                                        .fill(Color.init(cgColor: CGColor(red: CGFloat.random(in: 0...167)/255.0, green: CGFloat.random(in: 0...131)/255.0, blue: CGFloat.random(in: 0...89)/255.0, alpha: 0.9)))
                                        .frame(width: 200, height: 300)
                                        .clipShape(RoundedRectangle(cornerRadius: 10))
                                    
                                }
                            }
                        })
                        .padding(.leading,10)
                        .padding(.trailing,10)
                        
                        
                    }
                }
            }
            .frame(width:UIScreen.main.bounds.width)
            
        }
    }
}


#Preview {
    ScollViewBootcamp()
}

上图看看效果:

简单几句就能实现 ​​ScrollView​​ 的滑动效果;非常方便。

​​LazyVGrid​​ 网格布局,先上代码:

import SwiftUI

struct GridViewBootcamp: View {
    
    let columns=[
        GridItem(.flexible(),spacing: 6   ,alignment: .center),
        GridItem(.flexible(),spacing: 6    ,alignment: .center),
        GridItem(.flexible(),spacing: 6  ,alignment: .center),
    ]
    
    var body: some View {
        
        ScrollView{
            LazyVGrid(columns: columns,
                      alignment: .center,
                      spacing: 6,
                      pinnedViews: [.sectionHeaders],content:
                        {
                Section(content: {}, header: {
                    Text("section header 一”)
                        .font(.largeTitle)
                        .foregroundStyle(.blue)
                        .frame(width: UIScreen.main.bounds.width,height: 100,alignment: .leading)
                })
                
                ForEach(0..<41){
                    index in
                    Rectangle()
                        .fill(Color.init(cgColor: CGColor(red: CGFloat.random(in: 0..<255)/255.0, green: CGFloat.random(in: 0..<255)/255.0, blue: CGFloat.random(in: 0...255)/255.0, alpha: 0.9)))
                        .frame(height: 50)
                }
                
                //———
                Section {
                    
                } header: {
                    Text("section header 二”)
                        .font(.largeTitle)
                        .foregroundStyle(.blue)
                        .frame(width: UIScreen.main.bounds.width,alignment: .leading)
                    
                }
                
                ForEach(0..<41){
                    index in
                    Rectangle()
                        .fill(Color.init(cgColor: CGColor(red: CGFloat.random(in: 0..<255)/255.0, green: CGFloat.random(in: 0..<255)/255.0, blue: CGFloat.random(in: 0...255)/255.0, alpha: 0.9)))
                        .frame(height: 50)
                }
                
            })
            .padding(.leading,6)
            .padding(.trailing,6)
            .background(.gray)
        }.background(.blue)
    }
}

#Preview {
    GridViewBootcamp()
}

效果图:

总结:LazyVGrid大家看到这个单词有个​​Lazy​​懒加载的意思,它的内部加载item简单来说,就是当视图需要时,才会执行item内容渲染功能,展示UI上。也就这点注意。

​​SafeArea​​安全区域:

import SwiftUI

struct SafeAreaBootcamp: View {
    var body: some View {
        GeometryReader{
            src in
            Rectangle()
                .fill(.blue)
                .frame(maxWidth: .infinity,
                       maxHeight: .infinity)
        }
    }
}

#Preview {
    SafeAreaBootcamp()
}

效果图:

可以看到上下边距存在安全区域的,如果禁用安全区域,使用 ​​ignoresSafeArea(.all)​​ 可以去掉。

代码如下:

最后说说SwiftUI函数表达

上上代码:

import SwiftUI

struct ExtractFunctionsBootcamp: View {
    
    @State var bgc:Color = .red
    
    var body: some View {
        normolView
    }
    
    var normolView : some View {
        setUI()
    }
    
    func chageColor() -> Void {
        self.bgc = .red
    }
    
    func setUI()->some View {
        return ZStack{
            
            bgc
                .ignoresSafeArea(.all)
            
            VStack(spacing: 20, content: {
                
                Text("Hello, World!”)
                    .font(.largeTitle)
                
                Button(action: {
                    bgc = .brown
                }, label: {
                    Text(“Button”)
                        .font(.largeTitle)
                        .foregroundStyle(.white)
                })
                
                Button {
                    self.chageColor()
                } label: {
                    Image(systemName: “button.horizontal.top.press”)
                        .resizable()
                        .foregroundColor(.white)
                        .aspectRatio(contentMode: .fill)
                        .frame(width: 50,height: 50)
                }
            })
        }
    }
}


#Preview {
    ExtractFunctionsBootcamp()
}

其实函数表达跟我们swift语法糖一样;​​func​​ 命名;这点和swift语法糖没什么区别。

总结(说说我的感想)

​​优点:​​

简洁性:Swift,SwiftUI语法简洁,编写代码变得更加容易和快速。

安全性:是一种类型安全的编程语言,可以在编译时检测类型错误,这帮助我们避免许多常见的错误,提高代码的质量和可靠性。

互操作性:它与Objective-C语言无缝互衔接,是的OC与swift代码混编变的更加便捷。

​​说完优点在说缺点​​

功能限制:虽然SwiftUI提供了许多常见的UI组件,但与UIKit相比,功能仍然相对有限。在某些复杂的界面需求下,可能需要使用UIKit来实现。

错误提示不明确:有时SwiftUI, SwiftUI的错误提示可能不够明确,导致难以定位问题。

UIkit与SwiftUI缺乏无缝兼容:两者兼容性不够理想,这在业务开发中,你可能才能发现。

目前苹果与市面大量应用也在使用Swift,SwiftUI开发应用,这们语言在应用中占有读也是成倍增长。

路漫漫其修远兮,吾将上下而求索

后续更新中……….

SwiftUI - 界面布局知识点 SwiftUI 阅读详情

相关推荐

【SwiftUI官方教程】<Introducing SwiftUI>(1)

switfUI官方教程。

wwyyxhzzy 1776

SwiftUI入门到实战课程[iOS开发系列]

【课程特点】1、231节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面;2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例;3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会;4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;7、齐全的学习资料:提供所有课程的源码; 更好的应用,更少的代码!SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 

如何让可交互式(Interactive)Widgets 关联的 App Intent 动态对应于可变内容?

在本篇博文中,我们介绍了如何驾驭 AppIntent 的创建过程,让可交互式(Interactive)Widgets 关联的多个对象动态对应于可变内容。

享受开发,颠倒银河 1045

SwiftUI学习

基于swift语言的全新界面框架声明式语法,swiftUI将其自动转化为可以工作的高效代码复制编辑UI更有效率及时预览,与代码保持同步。

yuan_050905的博客 5134

SwiftUI 在 App 中弹出全局消息横幅(下)

在本篇博文中,我们先是利用共享状态作为新旧 Windows 间的沟通桥梁,接着派生出新的 UIWindow 类返回对全局视图交互事件负责的 UIView,最后我们利用 Preference 机制完美的获取到了全局消息横幅的位置和尺寸从而圆满了整个实现。

享受开发,颠倒银河 740

SwiftUI 利用 Swizz 黑魔法为系统创建的默认对象插入新协议方法(六)

在本篇博文中,我们讨论了如何在 SwiftUI 中利用 SWIZZ 黑魔法在运行时找到关键的拖放对象,并向其注入新的拖放完成回调方法,以便让本系列博文画上一个圆满的句号!

享受开发,颠倒银河 565

SwiftUI入门实战:从零构建卡片翻转动画

本文是SwiftUI入门实战指南,详细讲解如何从零构建一个丝滑的卡片翻转动画。通过这个经典项目,你将掌握SwiftUI的核心概念,包括状态管理(@State)、视图组合(ZStack)和动画修饰符(rotation3DEffect)。教程基于Stanford CS193p课程的学习路径,使用Xcode IDE,适合Swift初学者快速上手并理解声明式UI的编程思维。

CAT789的专栏 182

SwiftUI与UIKit混合开发实战:实现UIKit向SwiftUI值回传

回过头看,SwiftUI和UIKit的共存不是技术债,而是一种渐进式现代化的必然路径。关键在于建立清晰的边界、统一的数据流、可复用的桥接机制。记住这几条黄金法则:物理通道用,别硬拼全局状态走,别层层传参细粒度通信选Closure或Delegate,按需取舍生命周期差异靠弥合封装通用组件,让团队高效协作当你熟练掌握这些技巧后,你会发现:原来老项目也能焕发新生,而且比纯SwiftUI项目更接地气、更稳定。

weixin_31185473的博客 994

SwiftUI一日速成

SwiftUI 博大精深,当然不可能一天就学会它。但对于拥有 UIKit 基础的工程师来说,一天时间却足够让你上手一个 SwiftUI 项目了。本文适用于拥有 UIKit 开发经验的 SwiftUI 初学者。看完本文可能需要你一天的时间,但却可能让你拥有初步使用 SwiftUI 的能力。...

kmyhy的专栏 8545

SwiftUI通用UI组件构建实践

SwiftUI是苹果公司在2019年WWDC大会推出的一种全新的声明式UI框架。与传统的UIKit框架相比,SwiftUI以其简洁的语法、声明式编程范式以及对Swift语言特性的深入融合,使得开发人员可以更加高效地构建用户界面。SwiftUI框架的核心是视图,其通过组合不同的组件来构建用户界面。这些组件可以是简单的文本显示、按钮、图像,也可以是复杂的列表、分页、导航栏等等。构建自定义UI组件不仅是SwiftUI强大的功能之一,也是其推动开发者进行组件化实践的重要方式。

weixin_42594419的博客 1797

【实战指南】WinPE环境下360系统急救箱的病毒查杀全流程解析

本文详细解析了在WinPE环境下使用360系统急救箱进行病毒查杀的全流程。从制作WinPE启动盘到进入PE环境,再到360急救箱的深度使用和系统修复,提供了实用技巧和常见问题解决方案,帮助用户高效清除顽固病毒。

weixin_28568819的博客 535

SwiftUI入门篇

综上所述,SwiftUI通过其声明式语法、实时预览、跨平台开发支持以及更简单的布局和状态管理等特点,显著提升了iOS开发的效率和开发体验,使得开发者能够更快速地构建出现代化和响应式的应用程序。SwiftUI提供了一系列容器视图和布局视图,使得开发者能够以简单和直观的方式创建复杂的布局和组合视图。最简单的方式是指定图像的名称,SwiftUI会自动查找和加载相应的图像资源。是用来显示图像内容的视图组件。视图组合是指将多个视图组合在一起形成复杂的UI结构,可以通过嵌套不同的布局视图和控件视图来实现。

prompt 6418

RaiDrive+AList保姆级教程:5分钟搞定OneDrive/百度网盘挂载到本地(附WebDAV配置)

本文提供RaiDrive+AList的保姆级教程,5分钟内实现将OneDrive/百度网盘挂载到本地的详细步骤,包括WebDAV配置。通过AList统一转换云存储协议,RaiDrive虚拟磁盘挂载,显著提升多网盘管理效率,适合需要跨平台操作文件的用户。

weixin_28331555的博客 455

SwiftUI的优缺点

SwiftUI不仅为Apple的平台带来了一种新的构建UI的方式,还有全新的Swift编码风格; 可以推断出:SwiftUI会出现很多组件库,方便前端开发; 支持热更新,这一点可能让更多的开发者拥抱SwiftUI; 虽然SwiftUI优点很多,但是其使用的门槛很高,只能在iOS 13以上的系统使用;仅这点,很多公司和开发者望而却步,目前主流应用最低支持iOS 9,至少3年之内,SwiftUI只能作为一个理论的知识储备,所以其还有很长的路要走;

jia12216的专栏 4396

(超详细)互补格雷码+相移码求解包裹相位(Python实现)

记录实现“互补格雷码+相移码”求解包裹相位的编码过程。也可以叫它“5+4”法,5代表五幅格雷码图像,4代表四步相移法的四张正弦条纹图。

暴雨梨花博客 3万+

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3498

从0到1,SwiftUI带你开启跨平台应用开发新世界

通过本文的学习,我们对 SwiftUI 有了较为全面的认识。从它简洁直观的声明式语法,到丰富多样的基础组件和布局容器;从实现页面导航、网络请求等进阶应用,再到通过实战案例将所学知识融会贯通 ,SwiftUI 展现出了强大的功能和便捷性,为开发者带来了全新的开发体验。SwiftUI 的学习是一个不断积累和实践的过程。希望读者在掌握了本文的内容后,能够继续深入学习 SwiftUI 的更多高级特性,如手势识别、自定义视图、与 Core Data 集成等 ,不断提升自己的开发能力。

大雨淅淅的博客 2180

使用 Simulink + Simscape Electrical 对基于VSG控制的背靠背变流器整流侧进行建模与仿真

本文介绍了基于Simulink的直驱风电系统背靠背变流器整流侧虚拟同步发电机(VSG)建模方法。首先阐述了直驱风电系统结构和VSG控制的作用,然后详细指导了模型搭建过程:从创建项目、添加PMSG和变流器模块,到搭建主电路拓扑和实现VSG控制逻辑。重点说明了VSG控制器如何模拟传统同步发电机的特性,并提供了仿真设置和结果分析方法。该模型可用于研究风电系统在不同工况下的响应特性,为新能源发电系统设计提供重要参考。

amy_mhd的博客 180

【swift开发】SwiftUI概述 SwiftUI 全面解析:苹果生态的声明式 UI 革命

SwiftUI 正在重塑苹果生态的开发方式,随着每年版本的迭代,它已从新兴技术成长为成熟的企业级解决方案。对于新开发者,它是进入苹果生态的最佳入口;对于经验丰富的开发者,它是提升生产力的革命性工具;对于企业,它是构建未来应用的战略选择。

夜雨的博客 1797

【学习系列】SAP RAP 2:创建第一个RAP应用

本文介绍了从零开始创建基于SAP RAP(ABAP RESTful Application Programming Model)的Fiori应用的完整流程。首先说明了学习RAP需要结合官方文档和教程,并提供了相关资源链接。文章详细讲解了开发环境的准备要求,包括系统版本、开发工具和基本知识。重点演示了如何通过8个步骤创建支持CRUD操作和草稿功能的RAP应用:1)创建数据库表;2)定义CDS视图实体;3)创建投影视图;4)定义行为;5)创建行为投影;6)定义服务;7)绑定服务;8)添加UI注解。

DeveloperMrMeng的博客 1496

功能安全实战系列12-英飞凌TC3xx锁步核及其自检开发

本文介绍了英飞凌Tricore系列芯片的锁步核(Lockstep Core)功能及其故障注入自检机制。锁步核通过主核和检查核同步执行指令,并比较输出结果来检测硬件故障。文章详细阐述了锁步核的工作原理、使能配置方法以及故障注入自检的实现过程。故障注入测试通过专用寄存器LCLTEST触发,系统会定期自动测试比较器节点,验证锁步核的故障检测能力。当检测到异常时,会触发SMU模块的警报机制。该技术为汽车电子系统提供了重要的功能安全保障。

initiallizer的博客 918

干货 | 关于SwiftUI,看这一篇就够了

作者简介梁启健,携程金融支付中心开发工程师,主要负责支付iOS端的开发与优化工作,喜欢研究大前端和跨平台技术。SwiftUI是一种新颖的构建UI方式和全新的编码风格,本文...

携程技术 7342

国社科“选题设计论证”部分不再难!用AI快速梳理五大核心板块,轻松撰写出高质量的基金申报书(附AI提示词)

七哥给大家推荐的高校都在用的AI平台——高级学术版专业应用平台,集成了ChatGPT、Claude、Gemini、Grok等Al大模型的PLUS版本平台,包括 ChatGPT-5、4o、o3、4.1、4.5、Gemini 2.5 Pro、Claude 3.7、Claude 4、DeepSeek 满血版、Grok 3 、Grok 4等原生线路,还有国际主流的GPTs学术应用,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。

智能AI让学术科研更容易 930

SwiftUI【0】

SwiftUI【0】 最近开始了解学习SwiftUI的相关内容。参考了简书、优快云以及百度的一些文档,帮助自己有个更好的了解。

cena1001的博客 2633

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Swift & SwiftUI 3

Swift 使用关键字func进行函数的定义。当定义一个函数时,可以为其定义一个或多个不同名称、类型的值,作为函数的输入参数。当该函数完成时,将返回输出定义的类型。每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值可调用这个函数,函数的参数传递的顺序必须与参数列表中的顺序相同。定义一个函数的语法如下:我们可以通过函数名以及对应类型的参数值来调用函数,函数的参数传递的顺序必须与参数列表相同。print(s) 输出结果:13我们通过关键字struct。

Vinemoon的博客 2694

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

swiftUI和swift的区别

SwiftUI是苹果公司推出的一种用于构建iOS、macOS、watchOS和tvOS应用程序界面的框架。它是基于Swift编程语言开发的,旨在简化UI开发过程并提供实时预览功能,使开发人员可以更快地构建出漂亮的应用程序界面。Swift是苹果公司推出的一种面向对象的编程语言,旨在取代Objective-C成为iOS、macOS、watchOS和tvOS平台的主要编程语言。它具有现代编程语言的特性,如类型推断、闭包、泛型和安全的空值处理等,并在性能和安全性方面进行了优化。

wywinstonwy的专栏 5100

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 新手快速搭建springboot项目
下一篇: Objective-C—Class底层结构探索,真心分享给你!!!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值