336 次浏览
Bitcode – Bitcode 是代码外观的中间表示。我们无法使用此代码,也无法将其安装到设备上。当我们将应用程序上传到应用商店时,它将作为 bitcode 上传,稍后由 iTunes/Apple 转换为应用程序二进制文件。创建中间代码并上传到应用商店或在设备上运行时,名为 LLMV 的程序将接管控制并将中间代码转换为二进制文件,该文件对于模拟器为 x86 32 位或 x86 64 位,对于实际的 iOS 手持设备为 ARM…… 阅读更多
190 次浏览
处理符号文件是在我们创建项目的构建时在 Xcode 上显示的消息。当出现此消息时,Xcode 在后台下载特定设备和特定处理器(将在其上安装构建)的文件和符号文件。符号文件包含用于在特定处理器和 iOS 版本上进行调试的调试符号,当发生某些崩溃或错误时,这些符号用于创建崩溃报告。处理符号后,会在库中创建一个包含设备符号的新文件夹,通常位于“~/Library/Developer/Xcode/iOS DeviceSupport/”下。有时我们的系统可能会卡在这个步骤…… 阅读更多
171 次浏览
当我们构建 iOS 应用程序时,默认情况下它会获得版本 1.0 和构建 0。每当我们将新的构建上传到应用商店时,都需要更改版本号。我们可以更新测试构建的构建号。版本和构建号存储在项目中的 info.plist 文件中。有时我们可能需要在我们的应用程序中访问构建或版本号以执行某些自定义操作。要获取版本号,我们可以使用以下代码并将其分配给变量或常量。Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String 要获取构建号…… 阅读更多
2K+ 次浏览
要使用 iOS/Swift 检测当前设备,我们可以使用 UserInterfaceIdiom。它是 swift 中的一个枚举,它告诉我们正在使用哪个设备。接口习惯在其枚举中提供多个值,它们是:case unspecified @available(iOS 3.2, *) case phone // iPhone 和 iPod touch 风格的 UI @available(iOS 3.2, *) case pad // iPad 风格的 UI @available(iOS 9.0, *) case tv // Apple TV 风格的 UI @available(iOS 9.0, *) case carPlay // CarPlay 风格的 UI 在 swift 中,interfaceIdiom 可以按以下方式使用:print(UIDevice.current.userInterfaceIdiom) if UIDevice.current.userInterfaceIdiom == .phone { print("正在 iPhone 上运行") } 当我们运行以上代码…… 阅读更多
5K+ 次浏览
要在 iOS 中在一个视图控制器到另一个视图控制器之间导航,我们需要使用导航控制器。导航控制器管理视图控制器的堆栈,当我们从一个视图转到另一个视图时。从一个视图控制器到另一个视图控制器的导航可以像下面提到的那样完成。步骤 1 - 创建一个视图控制器对象。let vc = self.storyboard?.instantiateViewController(withIdentifier: "VC2ViewController") as! VC2ViewController 在此步骤中,我们初始化我们想要导航到的另一个视图控制器的类型对象。标识符变量应与我们的第二个视图控制器的标识符相同。步骤 2 - 导航到…… 阅读更多
918 次浏览
为了检测 iOS 中的摇动手势,UIKit 提供了三种不同的方法,让我们逐一看看它们。方法 1 - 当摇动手势开始时。override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { // 你想实现的代码 } 方法 2 - 当摇动手势结束时。override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { // 你想实现的代码。 } 方法 3 - 当摇动手势被取消时。override func motionCancelled(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { // 你想实现的代码。 } 现在让我们在我们的 motionBegan 方法中添加一些代码,override func motionBegan(_ motion: UIEvent.EventSubtype, with event: ... 阅读更多
3K+ 次浏览
要在 swift 中从日期减去小时,我们需要首先创建一个日期。创建该日期后,我们必须从中减去小时,尽管 swift 没有提供减去日期或时间的方法,但它为我们提供了一种以负值添加日期或日期组件的方法。在这个例子中,我们将看到如何实现同样的效果。让我们首先创建一个日期,让它成为今天,let today = Date() 现在要修改此日期,我们将使用带有负值的 add 函数,let modifiedDate = Calendar.current.date(byAdding: .hour, value: -2, to: today)! 现在要查看…… 阅读更多
要检查 swift 中的字符串是否包含特殊字符,我们可以使用 if else 或 switch 等条件语句,但这需要执行很多条件,从而使编程和执行时间消耗增加。因此,在这个例子中,我们将看到如何使用正则表达式以及 swift 提供的另一种方法来检查字符集中是否存在某些字符。方法 1 - 使用正则表达式 让我们创建一个 String 的扩展,并将以下代码添加到其中 extension String { var containsSpecialCharacter: Bool { let regex = ... 阅读更多
1K+ 次浏览
在Swift语言中验证邮箱和电话号码可以使用多个条件语句,例如if条件语句,但这将是一个漫长的过程,可能需要50到100个if语句来验证邮箱。因此,我们将使用正则表达式来代替条件语句。Swift提供了NSPredicates,我们可以用它来评估正则表达式并进行测试。让我们看看如何使用正则表达式来实现相同的功能。我们将创建一个函数,可以将其用作String类的扩展或UIViewController的扩展,以便在整个项目中使用。将以下代码添加到项目中的任何类中,或者创建一个单独的Swift类……阅读更多
4K+ 次浏览
要在单个UILabel中使用粗体和常规/非粗体文本,我们可以使用故事板编辑器来实现,也可以通过编程方式实现。让我们看看这两种方法。方法一 - 使用故事板编辑选择要编辑的标签,转到其属性检查器。从第一个选项“文本”中,选择“属性”而不是“普通”。在标签中写入以下文本:“粗体 常规”双击“粗体”以选中它,然后右键单击它以查看更多选项。从该选项中选择字体 > 粗体。这应该可以完成任务。方法二 - 通过编程方式实现结果。添加…阅读更多