IOS-SWIFT - 技术教程文章

从预编译的角度理解Swift与Objective-C及混编机制【代码】【图】

本文从预编译的基础知识入手,由浅至深的介绍了 Objective-C 和 Swift 的工作机制,并通过这些机制来解释混编项目中使用到的技术和各种参数的作用,由此来指导开发者如何进行混编。 写在前面本文涉及面广,篇幅较长,阅读完需要耗费一定的时间与精力。如果你带有较为明确的阅读目的,可以参考以下建议进行阅读:如果你对预编译的理论知识已经了解,可以直接从【原来它是这样的】的章节开始进行阅读,这会让你对预编译有一个更直观的...

SwiftUI 简明教程之指示器【代码】【图】

本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。 Eul 是一款 SwiftUI & Combine 教程 App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈现给读者。笔者意在尽可能使用简洁明了的语言阐述 SwiftUI & Combine 相关的知识,使读者能快速掌握并在 iOS 开发中实践。ProgressView ProgressView 有两种呈现形式,一种是菊花样式,另一种是进度条样式,二者分别对应...

SwiftUI 代码速查之 04 SafariServices 调用Safari浏览器组件【代码】

实战需求 SwiftUI SafariServices 调用Safari浏览器组件 实战代码 import SwiftUI import SafariServices// 调用方式.onTapGesture {isShowingSheet.toggle()}.sheet(isPresented: $isShowingSheet) {SFSafariView(url: articles.url)}//定义 struct SFSafariView: UIViewControllerRepresentable {typealias UIViewControllerType = SFSafariViewControllerlet url: URLfunc makeUIViewController(context: Context) -> SFSafariV...

SwiftUI 简明教程之按钮等控件【代码】【图】

本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。 Eul 是一款 SwiftUI & Combine 教程类 App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈现给读者。笔者意在尽可能使用简洁明了的语言阐述 SwiftUI & Combine 相关的知识,使读者能快速掌握并在 iOS 开发中实践。Button 构建方法 Button 的构建主要有以下两种方法: // 1、字符串构建,支持本地化字符串 But...

SwiftUI 五个扩展来编写更智能的代码之01 使用自定义下标进行安全的数组访问【代码】

一个好的开发人员应该编写具有高可维护性和可扩展性的出色代码。甚至更好的开发人员也可以使用智能功能来扩展编程语言,从而更易于阅读和编写简洁的代码。 让我向您展示Swift的5个代码扩展,这些代码扩展我每天都会使用。每个细节都会详细说明,并会根据其背景/原始意图进行重新创建。 1.使用自定义下标进行安全的数组访问 每个开发人员至少经历过一次“越界”异常。当您尝试在一个负数或高于元素数的位置访问元素时,会发生这种情...

InterfaceKit--One line of code to implement interfaces of UIKit,AppKit,and WatchKit in SwiftUI inter【代码】【图】

One line of code to implement interfaces of UIKit,AppKit,and WatchKit in SwiftUI interface!Chinese (Simplified): 中文文档 Code interpretation document: https://github.com/adong666666/InterfaceKitDoc(or this repositorys Docs) The basic idea of InterfaceKit is that we want some user interface abstraction layer that sufficiently encapsulates actually calling UIKit,AppKit,and WatchKit directly. It sho...

InterfaceKit:一行代码实现在SwiftUI界面使用UIKit、AppKit和WatchKit的接口!【代码】【图】

一行代码实现在SwiftUI界面使用UIKit、AppKit和WatchKit的接口! English: English Document 代码解释文档:https://github.com/adong666666/InterfaceKitDoc(或此存储库的Docs) InterfaceKit的基本思想是,我们想要一些用户界面抽象层,它能充分封装直接调用UIKit,AppKit和WatchKit。它应该足够简单,使普通的东西容易,但要足够全面,使复杂的东西也容易。 您可以在愿景中查看有关项目方向的更多信息。┌──────────...

Swift与Objective-C互相调用(总结)【图】

公司正式使用swift语言开发项目已经一年多, 现在总结一下swift和OC互相调用的经验swift调用OCSwift调用OC类,必须要有桥接文件,且在桥接文件中 import OC类的.h文件。1. 创建 "工程名称"-Bridging-Header.h文件创建新的工程时会自动提示创建桥接文件SwiftTestProject(工程名称)-Bridging-Header.h, 这个文件是swift调用OC所必须的.创建桥接文件如果新建工程没有勾选创建-Bridging - Header.h文件, 则需要手动创建一个"工程名称"-B...

学习RXSwift之传统和Rx改在对比【代码】【图】

RxSwift只是基于swift语言的Rx标准实现接口库,RxSwift不包含任何Cocoa或者UI方面的类 RxCocoa:是基于RxSwift针对IOS开发的一个库,它通过Extension的方法给原生UI控件增加R x特性,使得我们更容易订阅和响应这些控件的事件。 简单建立一个TableView // // ViewController.swift // LeanRxSwift // // Created by maochengfang on 2021/4/27. //import UIKit import RxSwiftimport Foundation struct Music {let name: String;...

SwiftUI——如何随机输出一个数组

做app或者项目的时候有时候需要随机输出一个数组,我们可以将当前数组打乱,赋值给一个空数组,然后将该数组依次输出,来实现同样的效果。 我自己写了个Demo,各位可以参考一下:https://github.com/ZhongUncle/CSDN-Demo 转载使用请标明出处,谢谢。

万字长文|Swift语法全面解析|附示例

?这是全栈程序媛Cara的一篇Case Study总结,万字长文,每一个知识点都对应了demo,理论与实践结合,讲解地非常到位。建议同学们收藏、分享、转发三连。?Swift介绍Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。swift 是一种安全,快速和互动的编程语言。swift 支持代码预览(playgrounds),这个特性可以允许程序员在不编译和运行应用程序的前提下运行 Swift 代码并实时查看结果。Swift 通过采用现代编程模式来避免...

【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验【代码】【图】

最近在学iOS开发,本系列会针对iOS从前到后的开发进行全面讲解,小到开发工具使用,大到应用市场上线。需求:1.显示一个橘黄色矩形 2.矩形上面一个按钮可以点击,并有响应事件 3.界面中心显示一张图片系统版本:Mac OS 版本:10.15.5 Xcode版本:11.5一、创建demo项目1.1 选择创建一个Xcode Project1.2 选择Single View App二、代码实现2.1 程序入口说明Application/AppDelegate.swift文件中的@UIApplication注解,表示这个Class类...

Swift 中使用 Apple CryptoKit 和用户指定的密码进行加密和解密【代码】

Apple 发布了 Swift Crypto,这是 iOS 13 和 macOS Catalina 中附带的CryptoKit 框架的开源实现,使我们能够在 Linux 上使用相同的 API 进行加密和哈希处理。 Apple CryptoKit 文档中提供的示例。但是这些示例它没有说明这实际上是如何工作的。 您如何制作钥匙,以及如何在实践中使这种东西起作用。 创建密钥 import CryptoKit // 根据给定的密码创建加密密钥 /// - 参数 password:用于生成密钥的密码 func keyFromPassword(_ pas...

Swift5.2 Control SelectPhotoView(图片显示框)【代码】【图】

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。import UIKitclass ViewController: UIViewController {let photoSelectView = SelectPhotoView(limitIconCount: 4)override func viewDidLoad() {super.viewDidLoad()view.backgroun...

Swift 团队开源 Collections,提供更多高效数据结构【代码】

Swift 团队于上周开源新软件包 Swift Collections,以扩展 Swift 的数据结构集合。这个新的开源软件包与 Swift Algorithms 和 Swift Numerics 一样,目的在于扩展 Swift 标准库的新功能。Swift 标准库目前实现了三个最基本的通用数据结构:Array、Set 和 Dictionary,这几个数据结构可以满足基本的需求,但有时候为了更有效地解决问题或保持不变性,开发人员可能需要更多的数据结构。而 Swift Collections 软件包就提供了不少新的数...

Using Machine Learning to Analyze Taylor Swift‘s Lyrics【图】

For the past few months, the Curriculum team at Codecademy has been hard at work creating Machine Learning courses. While we all loved writing the courses, we also wanted to see what we could do with real-world data. As a result, we challenged each other to find a use for machine learning in a topic that we were passionate about. For me, that’s music. It’s said that popular music is a reflection...

SwiftUI - 百行代码变十行,Swift再创辉煌!【图】

苹果开发者大会 WWDC 2019 在北京开幕。在这场大会上除了「史上最难看 Mac 主机」、首次出现的iPadOS以外,我们还终于可以对饱受诟病的iTunes说再见了。而对于开发者来说,新发布的 SwiftUI 可能是最吸引人的特性,在 苹果公司软件工程高级副总裁Craig Federighi的演示中,我们可以轻松地把一百行的前端代码缩减到十几行。作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130595548,不管你是...

Swift进阶学习二——基础控件创建、页面跳转【代码】【图】

上期写到了swift语言项目搭接,这期主要写关于swift语言对于oc创建基础控件的区别和改变,swift创建控件的用法。 项目创建完成会默认三个文件,两个Delegate文件,先在ViewController控制器中开始我们的简单控件的创建与使用。 创建几个备用文件,创建完之后的项目目录。 控制器:对于只属于控制器的方法、属性要记得只写入在class之间的大括号里面 import UIKitclass FourthVC: UI...

Understanding Swift’s value type thread safety - 代码分析(一)

结构体并不代表线程安全,swift在此上未做保证func testScenarioA() throws {var store: Int = 0DispatchQueue.concurrentPerform(iterations: 1_000_000) { i instore = i_ = store}}执行后下断点,对比寄存器和反汇编代码(lldb) dis UnderstandStruct`closure #1 in testScenarioA():0x100002b60 <+0>: pushq %rbp0x100002b61 <+1>: movq %rsp, %rbp0x100002b64 <+4>: movq $0x0, -0x8(%rbp)0x100002b6c <+12>: movq $...

SwiftUI应用开屏广告界面(3秒跳转)【代码】【图】

SwiftUI应用开屏广告界面(3秒跳转) 瞎扯不想看我瞎扯可以直接跳到这需求源码思路分析页面跳转计时远程图片获取瞎扯 最近开始玩Swift试试macOS和iOS开发 我都快忘了我是啥专业的了 不想看我瞎扯可以直接跳到这 需求 模拟开屏广告的模式,为应用做一个开屏活动页,远端提供活动页图片; 图片经过3s倒计时后消失,用户可以点击“跳过”按钮提前结束; 源码 废话不多说,先直接上源码。 工程中只修改了ContentView.swift文件,所以这...

学习使用SwiftUI开发MacOS 应用- 第一节 如何创建SwiftUI 应用并实现窗口交互【代码】【图】

在这一节里,我们不和其他教程一样细讲每个实现原理,从我们大多数应用中经常碰到的窗口操作去实现,比如 如何在SwiftUI 中实现一个登陆窗口,并且当成功登陆后关闭登陆窗口并打开主窗口,以及了解如何设置窗口相关属性。第一步 创建项目 我们先学习如何创建SwiftUI项目,和在项目中选择何种方式去创建SwiftUI 项目,即两种方式创建SwiftUI项目的区别和在实际项目中如何使用他们。 首先我们打开 Xcode 创建项目,在项目中我们选择...

swift LeetCode岛屿类问题【代码】

swift LeetCode岛屿类问题 200. 岛屿数量 class Solution {func numIslands(_ grid: [[Character]]) -> Int {guard grid.count > 0 && grid[0].count > 0 else {return -1}var res = gridvar count = 0for i in 0..<res.count {for j in 0..<res[0].count {if res[i][j] == "1" {dfs(&res, i, j)count = count + 1}}}return count}func dfs(_ grid: inout [[Character]],_ r:Int,_ c:Int) -> Void {if !inArea(grid, r, c) {return...

swift混编调用oc编写的Xib UIView出现[Storyboard] Unknown class in Interface Builder file.问题的解决【图】

目录 编译器运行后报错问题原因:这种问题仅限于swift调用其他项目的oc xib其他项目的oc xib配置如下:之前封装xib都是封装的控制器,今年开始把UIView封装成Xib,这样更灵活,但是之前都是封装的Swift的Xib给Swift项目用,今天封装了Oc Xib给Swift项目调用发现了问题.在Storyboard里面不识别oc 的Xib编译器运行后报错 [Storyboard] Unknown class _TtC24TDWTZImagePickerViewDemo20TDWTZImagePickerView in Interface Builder file. 意思...

MBProgressHUD Swift 简易封装【代码】

1 /**2 可带文字的菊花3 */4 class func showWait(_ Text: String?){5 let showView = viewToShow()6 let hud = MBProgressHUD.showAdded(to: showView, animated: true)7 hud.label.text = Text8 hud.removeFromSuperViewOnHide = true9 } 10 11 /** 12 闪现1.5秒钟的文字 13 */ 14 class func showMoment(_ Text: String){ 15 let sh...

SwiftUI iOS 完整项目之网络请求文章并列表显示JSON【代码】【图】

实战需求 SwiftUI iOS 完整项目之网络请求文章并列表显示JSON 本文价值与收获 看完本文后,您将能够作出下面的界面看完本文您将掌握的技能网络数据更新.onAppear(perform: {self.networkManager.fetchData() })网络数据遍历方式List(networkManager.posts){ post inNavigationLink(destination: DetailView(url: post.url)){HStack{Text(String(post.points))Text(post.title)}}}基于ObservableObject构建网络请求组件URLS