ios开发 如何控制appstore中显示的语言_跟我学iOS14开发入门介绍

本文介绍了iOS开发的基础知识,包括iOS的发展历史、开发环境和工具,以及如何创建第一个iOS项目。重点讲解了App的设置,如在AppStore中控制显示的语言,涉及到项目文件、模拟器和App初始化流程,包括AppDelegate和SceneDelegate的角色。同时,深入探讨了Swift语言和UIKit中的UIView与UIViewController的交互,讲解了@IBOutlet和@IBAction的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

iOS 是由苹果公司开发的移动操作系统 。苹果公司最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统(最初叫 iPhone runs OS X)。该系统最初是设计给 iPhone 使用的(所以后来曾命名为 iPhone OS),之后陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上(所以在 WWDC 2010 上最终宣布更名为 iOS)。

iOS发展历史

2007-2020 每年发布一个新版本,最新版本 iOS 14(本教程基于 iOS 14)。

Apple官网与开发者网站

  • https://www.apple.com

  • https://developer.apple.com

开发硬件

  • 苹果电脑:iMac 或者 MacBook 或 Mac mini 主机连接一个显示器。

  • 还可以在普通电脑上装一个黑苹果系统(不推荐),安装复杂且不稳定。

开发软件

iOS 使用 Xcode 工具进行开发。可以在 App Store 搜索安装,也可以去 Apple 开发者网站下载安装(本教程基于 Xcode 12)。

开发语言

Swift 或者 Objective-C(本教程基于 Swift 5.x)。

开发者账号

  • 个人 99 $/年

  • 公司 99 $/年

  • 企业 199 $/年

iOS系统四个层次

153041875458f1ccf1dc408d040f630e.png

  • Core OS 是最为核心的系统层,包括了内存管理,文件系统,硬件管理,电源管理,安全管理等内容。

  • Core Services 包含了多种核心服务提供给 App 使用,如网络、线程、定位等。

  • Media 层主要包括了各种媒体文件的处理,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。

  • Cocoa Touch 层为应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,它负责用户在 iOS 设备上的触摸交互操作以及一些其他的关键功能。

创建第一个iOS项目

4c6ac90352af037e0303b47ac6aca33f.png

项目文件

baf8ab2a003abc06791ff74c760e50b8.png

App设置

  • 应用名

    • 项目 —> Target —> General —> Display Name

  • 应用图标2d7cfb9d26b859f798fbf46edb524ea7.png

  • 启动屏 LaunchScreen

    • 启动屏影响分辨率,可通过 LaunchScreen 删除验证。

模拟器

27a86eb5e26bc5e253789c6b82d40abf.png

App初始化流程

AppDelegate

  • 程序入口@main(iOS 14 以前是 @UIApplicationMain)

  • didFinishLaunchingWithOptions启动方法

  • 委托给SceneDelegate

SceneDelegate

  • window

  • 生命周期

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

var window: UIWindow?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
}

func sceneDidDisconnect(_ scene: UIScene) {
}

func sceneDidBecomeActive(_ scene: UIScene) {
}

func sceneWillResignActive(_ scene: UIScene) {
}

func sceneWillEnterForeground(_ scene: UIScene) {
}

func sceneDidEnterBackground(_ scene: UIScene) {
}
}

初始化

Main Storyboard
  1. 解析 Info.plist 获得Application Scene Manifest,找到Main Storyboard file base name设置的 Storyboard。 

  2. @main

  3. AppDelegate —> SceneDelegate

  4. 显示 Main.storyboard 中初始化的控制器。

Storyboard介绍
  • 容器概念

  • is Initial View Controller(箭头移动)

  • Storyboard 中的界面与ViewController.swift之间的联系(一个界面与一个类文件关联)

纯代码
  1. 删除 Info.plist 中的Main Storyboard file base nameApplication Scene Manifest最里层的Storyboard Name

  2. 解析 Info.plist 发现没有设置 Main Storyboard。

  3. @main。

  4. AppDelegate —> SceneDelegate

  5. 在 SceneDelegate 的willConnectToSession中纯代码初始化 UIWindow,并设置显示的第一个控制器。window —> rootViewController —> UIViewController —> UIView

UIView与UIViewController

初步印象

iOS 开发中,一个界面就是一个 UIViewController(视图控制器),界面上显示的内容就是 UIView(视图)。

UIView与UIViewController的关系

UIViewController 中默认有一个和屏幕一样大的 UIView,UIViewController 管理着它的生命周期。所有放在界面上的 UI 控件都放在 UIViewController 的 UIView 之上,在 UIViewController 的代码中可以通过self.view属性获取它。开发中的其他 UIView(及其子类)都放在该view上。 

UIViewController中UIView的生命周期函数
  • viewDidLoad:View 完成内存加载

  • viewWillAppear:View 即将显示

  • viewDidAppear:View 完全显示

  • viewWillDisappear:View 即将消失

  • viewDidDisappear:View 彻底消失

UIView

iOS坐标系
  • 二维坐标系

551d0cce080868bc1e019d802e4d2dfb.png

UIView添加到UIViewController的View

30bc4156156bea422bedf28fc074bc0a.png

UIView的容器概念
  • UIView 中可以放其他的 UIView

  • UIView 的层次关系(平级与包含)

UIView常见属性
  • backgroudColor:背景色

  • frame:相对父视图的坐标和大小

  • bounds:相对自身的坐标和大小,所以 bounds 的 x 和 y 永远为0。

  • center:相对父视图的中心点坐标

  • alpha:透明度(0.0 ~ 1.0)

  • tag:标记(Int 类型,默认等于0),设置后,可以通过所在容器View.viewWithTag方法拿到这个视图。

  • title:标题

  • superview:父视图

  • subviews:所有子视图

UIView常见方法
  • addSubview:添加视图到父视图

  • removeFromSuperview:将视图从父视图中移除(需提前讲解触摸方法)

  • viewWithTag:根据 tag 值获取视图

  • insertSubview:在指定视图的上/下面插入视图

  • bringSubviewToFront:把视图移到最顶层

  • exchangeSubviewAtIndex:将2个位置的视图互换

演示UIView与UIViewController

  • Storyboard

    • 注意左侧面板的视图层次结构

    • 属性面板的重要属性介绍

  • 纯代码

    • 与 Storyboard 属性面板的属性对应

注意代码的书写位置,往往有人由于书写的位置不对导致代码报错。

@IBOutlet与@IBAction

引入

如何在代码中获取 Storyboard 中的自定义 UIView?目前有两种方式:

  • 通过 tag 属性:一旦视图多了,或者忘了设置 tag,亦或者设置了相同的 tag,都会出现问题。

  • 通过 subviews 属性:一旦视图多了很难通过数组准确获取某个 View。

那么有没有更加友好、更加直观、更加便捷、更加高效的方法呢?答案是肯定的,那就是 @IBOutlet 与 @IBAction

@IBOutlet

  • 写于类中的属性

  • 与 Storyboard 中的 UIView 建立联系。

  • 此时的属性就代表 Storyboard 中的 UIView

  • 所有的 UI 控件都可以拖拽 @IBOutlet。

@IBAction

  • 写于类中的方法

  • 与 Storyboard 中的 UIView 产生的事件建立联系。

  • 当相应的事件发生时,方法就会被调用。

  • 只有继承自 UIControl 的 UI 控件可以拖拽 @IBAction。

顺向与反向拖拽连线

  • 顺向拖拽连线:通过 Storyboard 向类文件拖拽连线。

  • 反向拖拽连线:通过类文件向 Storyboard 拖拽连线。

连线的前提

Storyboard 中的 UIViewController 与 想拖拽的类进行了关联。

经典的连线错误

  • UIView 连线后删除了类中的 @IBOutlet 或者 @IBAction。

  • UIView 连线后改变类中的 @IBOutlet 或者 @IBAction 名字。

  • 错误信息

  1. @IBAction:unrecognized selector sent to instance

  2. @IBOutlet:this class is not key value coding-compliant for the key XXX

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值