iOS入门

作者: 喜悦莲花 | 来源:发表于2021-07-08 16:51 被阅读0次

    账号

    1. 苹果开发者网站

    2. Account (账号管理):

      1. image-20210701150931931.png
      2. image-20210701153357180.png
      3. 开发证书申请

        1. 打开KeyChainAccess(钥匙串访问)

        2. 证书助理 -> 从证书办法机构请求证书

        3. 打开Apple Developer网页, Certificates+

      4. BundleID申请

        1. 打开Apple Developer网页, Identifiers+
      5. 测试设备添加

        1. 打开Apple Developer网页, Devices+

        2. UDID获取

      6. 配置证书

        1. 打开Apple Developer网页, Profiles+
      7. P12文件

        1. 打开KeyChainAccess(钥匙串访问)

        2. 搜索Apple Distribution,右键导出

    环境

    1. Xcode
      1. Xcode一般情况下是兼容旧版本的,去到App Store下载最新版本即可

      2. 旧版本Xcode下载

    2. CocoaPods
      1. 安装

        1. homebrew安装(镜像):

          1. Intel芯片安装

          2. M1芯片安装:

        2. cocoapods安装:

          1. brew search cocoapods

            ==> Formulae

            cocoapods ✔

            ==> Casks

            cocoapods

          2. brew install cocoapods

      2. 使用

        cd ~/project
        pod init
        pod install
        
        1. 打开工程文件(workspace)
        2. 点击Pod(project) -> Podfile,编辑 pod 'AFNetworking'
      3. podfile文件规范

        1. platform: iOS, '7.0' // 指定所支持系统和最低版本
        2. inhibit_all_warnings! // 屏蔽所有warning
        3. def pods // 定义依赖宏
        4. pod 'SDWebImage' // 更新时会找到最新版本
        5. pod 'Masonry', '1.0' // 找到指定版本更新
        6. (> 0.1) // 高于0.1的任何版本
        7. (>= 0.1) // 版本0.1和任何更高版本
        8. (<0.1) // 低于0.1的任何版本
        9. (<= 0.1) // 版本0.1和任何较低版本
        10. (~> 0.1.2) //版本0.1.2到0.2,但不包括0.2.并且始终是你指定范围内的最新版本
        11. pod 'Objection', :head // 找到spec下该pod的最新可用版本(慎用)
        12. pod 'PonyDebugger', :configurations => ['Release', 'App Store'] // 依赖只能在给定的build configuration中被启用

    新建工程

    1. project

      1. Create a new Xcode project

      2. iOS platform -> App

      3. image-20210701180001771.png
    2. workspace

      之间的关系
      1. 打开Xcode -> File -> New -> Workspace

        1. 该操作会新建一个Workspace

        2. File -> Add Files to "workspace"

      2. 打开project -> File -> Save As Workspace

        1. 该操作能直接将一个既有的Project添加到Workspace中
      3. 使用cocoapods命令行直接生成

        1. cd到project目录

        2. pod init

        3. pod install

    底层框架

    iOS系统架构:基于UNIX。分为4个层次:核心操作系统层(最底层)Core OS、核心服务层 Core Services、媒体层 Media、可触摸层 Cocoa Touch.

    1. Core OS:

      这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等,所有这些功能都会通过C语言的API来提供

    2. Core Services:

      Core Services在Core OS基础上提供了更为丰富的功能, 它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因为它提供了一系列处理字串,排列,组合,日历,时间等等的基本功能。Foundation是属于Objective-C的API,Core Fundation是属于C的API。另外Core servieces还提供了其他的功能,比如:

      Security, Core Location, SQLite, 和Address Book. 其中Security是用来处理认证,密码管理,按安全性管理的; Core Location是用来处理GPS定位的;SQLLite是轻量级的数据库,而AddressBook则用来处理电话薄资料的。

      1. 电话本

        电话本框架(AddressBook.framework)提供了保存在手机设备中的电话本编程接口。开发者能使用该框架访问和修改存储在用户联系 人数据库里的记录。例如,一个聊天程序可以使用该框架获得可能的联系人列表,启动聊天的进程(Process),并在视图上显示这些联系人信息等。

      2. 核心基础框架

        核心基础框架(CoreFoundation.framework)是基于C语言的接口集,提供iPhone应用的基本数据管理和服务功能。该框架 支持如下功能: Collection数据类型(Arrays、 Sets等); Bundles; 字符串管理; 日期和时间管理; 原始数据块管理; 首选项管理; URL和Stream操作; 线程和运行循环(Run Loops); 端口和Socket通信。 核心基础框架与基础框架是紧密相关的,它们为相同的基本功能提供了Objective-C接口。如果开发者混合使用Foundation Objects 和Core Foundation类型,就能充分利用存在两个框架中的"toll-free bridging"。toll-free bridging意味着开发者能使用这两个框架中的任何一个的核心基础和基础类型,例如Collection和字符串类型等。每个框架中的类和数据类型的 描述注明该对象是否支持toll-free bridged。如果是,它与哪个对象桥接(toll-free bridged)。

      3. CFNetwork

        CFNetwork框架(CFNetwork.framework)是一组高性能的C语言接口集,提供网络协议的面向对象的抽象。开发者可以使用 CFNetwork框架操作协议栈,并且可以访问低层的结构如BSD Sockets等。同时,开发者也能简化与FTP和HTTP服务器的通信,或解析DNS等任务。使用CFNetwork框架实现的任务如下所示: BSD Sockets; 利用SSL或TLS创建加密连接; 解析DNS Hosts; 解析HTTP协议,鉴别HTTP和HTTPS服务器; 在FTP服务器工作; 发布、解析和浏览Bonjour服务。

      4. 核心位置框架(Core Location Framework)

        核心位置框架(CoreLocation.framework)主要获得手机设备当前的经纬度,核心位置框架利用附近的GPS、蜂窝基站或Wi- Fi信号信息测量用户的当前位置。iPhone地图应用使用这个功能在地图上显示用户的当前位置。开发者能融合这个技术到自己的应用中,给用户提供一些位 置信息服务。例如可以提供一个服务:基于用户的当前位置,查找附近的餐馆、商店或设备等。

      5. 安全框架(Security Framework)

        iPhone OS除了内置的安全特性外,还提供了外部安全框架(Security.framework),从而确保应用数据的安全性。该框架提供了管理证书、公钥/私 钥对和信任策略等的接口。它支持产生加密安全的伪随机数,也支持保存在密钥链的证书和密钥。对于用户敏感的数据,它是安全的知识库(Secure Repository)。CommonCrypto接口也支持对称加密、HMAC和数据摘要。在iPhone OS里没有OpenSSL库,但是数据摘要提供的功能在本质上与OpenSSL库提供的功能是一致的。

      6. SQLite

        iPhone应用中可以嵌入一个小型SQL数据库SQLite,而不需要在远端运行另一个数据库服务器。开发者可以创建本地数据库文件,并管理这些 文件中的表格和记录。数据库SQLite为通用的目的而设计,但仍可以优化为快速访问数据库记录。访问数据库SQLite的头文件位 于 < iPhoneSDK >/usr/include/sqlite3.h,其中 < iPhoneSDK >是SDK安装的目标路径。

      7. 支持XML

        基础框架提供NSXMLParser类,解析XML文档元素。libXML2库提供操作XML内容的功能,这个开放源代码的库可以快速解析和编辑 XML数据,并且转换XML内容到HTML。访问libXML2库的头文件位于目录 < iPhoneSDK >/usr/include /libxml2/,其中 < iPhoneSDK >是SDK安装的目标目录。

    3. Media:

      如同其名,Media层提供了图片,音乐,影片等多媒体功能。图像分为2D图像和3D图像, 前者由Quartz2D来支持,后者则是用OpenglES.与音乐对应的模组是Core Audio和OpenAL, Media Player 实现了影片的播放, 而最后还提供了Core Animation来对强大动画的支持。

      1. 图像技术(Graphics Technologies)

        高品质图形是iOS应用程序非常重要的一部分,最简单(和最有效)的方法来创建一个应用程序是使用预渲染图片与UI标准控件结合实现系统绘制。然而,有些时候你可能需要一些稍微复杂的图形,你可以使用下面的技术来管理你的图形内容:

        1、Core Graphics(Quartz)处理本地2D矢量图形和基于图像的渲染 -------Core GraphicsFramework

        2、Core Animation提供视图动画高级支持-----Quartz Core Framework

        3、Core Image提供视频和静态图片的高级支持-----Core Image Framework

        4、OpenGL ES和GLKit 提供2D、3D硬件加速渲染接口------OpenGL ES Framework GLKit Framework。

        5、Core Text提供了一个复杂的文本布局和渲染引擎。-----Core Text Framework。

        6、Image I/O提供大部分图像格式的读写接口。-------Image I/O Framework

        7、Assets Library framework提供了在用户相册访问图片和视频的接口------Assets Library Framework

        在大多数情况下,应用程序运行在Retina屏设备上几乎不用对代码做任何修改。你画的任何内容会自动支持高分辨率屏幕。基于矢量的绘图代码,系统框架自动帮你完成了像素的填充。如果你在程序中使用了图片,系统自动帮你加载高分辨率图片。------App-Related Resources介绍了如何适应高清屏幕

      2. 音频技术(Audio Technologies)

        音频技术在iOS中被设计用来提供丰富的音频用户体验。这个体验包括:播放高品质音频,录制高品质音频,以及触发某些设备的震动功能。

        系统提供了几种方法来播放以及录制音频内容。接下来的框架列表是按照高层到底层的顺序列举的。Media Player Framework是最高层的音频接口,当选择一个音频技术的时候,高层的框架是最容易使用也是最优先的。低层框架提供更大的灵活性和控制,但是需要你做更多的功能。

        (1)Media Player framework提供简单的方式访问用户的iTunes列表,支持播放列表并且能监测播放状态。------Media Player Framework

        (2)AV Foundation 提供了一系列简单易用的OC接口用于管理音频播放和录制。------AV Foundation Framework

        (3)OpenAL 提供了一系列跨平台接口提供位置音频。------OpenAL Framework

        (4)Core Audio框架提供了 简单和复杂接口来播放以及录制音频内容。你使用这个接口播放系统的警告,手机震动,管理缓冲,播放多通道本地或流音频内容。------Core Audio

        iOS支持以下音频格式:------Media Layer Frameworks

        AAC

        Apple Lossless(ALAC)

        A-law

        IMA/ADPCM(IMA4)

        Linear PCM

        u-law

        DVI/Intel IMA ADPCM

        Microsoft GSM 6.10

        AES3-2003

      3. 视频技术(Video Technologies)

        无论你播放应用程序的电影文件还是网络上的视频流,iOS提供了几种播放视频内容的技术。设备的硬件可以捕获视频并且应用到你的程序中。

        系统提供了几种途径播放以及录制视频,你可以根据需要选择使用这些技术。当选择一个视频技术,记住,高级框架帮你做了很多工作,简化了操作,应该首选高级框架。下面的框架列表是按从高到低顺序列举的。

        (1)UIImagePickerController类提供了使用设备录像的接口。

        (2)Media Player Framework提供了一系列简单易用呈现全屏或者小屏视频的接口。-----Media Player Framework

        (3)AV Foundation Framework提供了一些列OC接口用于管理捕获或者播放视频。-----AV Foundation Framework

        (4)Core Media 描述了高层框架使用的底层数据类型,提供了低层接口操作媒体。-----Core Media Framework

        iOS支持播放以下后缀的文件:.mov、.mp4、、m4v、.3gp

        压缩标准:

        H.264 视频 最高达1.5Mbps,640x480像素,每秒30帧。低复杂度版本的H.264基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

        H.264 视频 最高达768Kbps,320x240像素,每秒30帧。基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

        MPEG-4视频,最高达2.5Mbps,640x480像素,30帧每秒,基本配置使用AAC-LC音频,最高达160Kbps,48kHZ,立体声,视频以.m4v、.mp4、.mov为后缀

        想获得更多关于UIImagePickerController类的使用,参考Camera Programming Topics foriOS.

      4. AirPlay

        AirPlay 是一中能让你应用程序的音频流在Apple TV或者其他第三方的扬声器或者接收器上播放的技术。AV Foundation框架和Core Audio都内置了AirPlay。使用上述框架,一旦你选择使用AirPlay播放音频,都会被系统自动处理以及转换。

        在iOS5里,用户可以AirPlay将iPad2上的内容映射到Apple TV2上。开发者可以创建UIScreen对象通过AirPlay展示不同的内容到iPad2上。iOS5同样提供了多种方式通过AirPlay传递内容,包括使用AV Foundation Framework中的 AVPLayer以及UIKit的中的UIWebView,此外,Media Player Framework支持显示 “正在播放”信息在多个地方。-------AirPlay OverView。

      5. Media层框架

        Assets Library Framework

        iOS4.0之后引入的,提供了一个基于查询的接口来检索用户设备上的照片和视频。使用这个框架,你可以在自己的程序内来访问 Photos 应用程序的 相册以及视频资源。同样可以存储照片或者视频到相册。

        更多这个框架中类和方法的介绍,参考 Assets Libarry FrameworkReference。

        AV Foundation Framework

        iOS2.2中引入,框架包含了 用于播放音频内容的OC类。你可以使用这些类播放任意时长的 基于文件或者内存的音频。你可以同事播放多个声音,可以控制每个声音的各个方面。iOS3.0之后,这个框架还可以录制音频以及管理音频会话。iOS4.0之后,这个框架的服务扩大到了:

        1、媒体资源管理

        2、媒体编辑

        3、电影捕捉

        4、电影回放

        5、跟踪管理

        6、媒体元素据管理

        7、立体声

        8、精确同步声音

        9、一个OC接口来确定声音的文件信息,例如数据格式,采样率,和声道数量。

        iOS5以后,AV Foundation Framework包含了 支持通过AirPlay播放音频、视频流的类AVPlayer。AirPlay默认是启用的,但可以根据需要设置开启或关闭。

        AVFoundation Framework 是iOS中单独来录制和播放音频、视频的框架,相对于高级框架,在处理以及管理媒体资源上,提供了更为完美的支持 。

        更多这个框架中类和方法的介绍,参考 AVFoundation Framework Reference。

        Core Audio

        本地音频是有Core Audio家族一些列框架支持的,下面的表会列出这个家族。

        [图片上传失败...(image-d09914-1625734185000)]

        Core Audio是一个基于C的接口,支持操作立体声音频,你可以使用Core Audio在iOS应用程序中生成、录制、混合以及播放音频。你还可以使用Core Audio来触发手机设备的震动功能。

        更多Core Audio的信息,参考Core Audio OverView. 关于如何使用Audio ToolBox Framework播放音频,参考Audio Queue Services Programming Guide。 Core Graphics Framework

        CoreGraphics framework包含Quartz 2D绘图API接口。Quartz是OSX中先进的、基于矢量绘图引擎。它提供了支持基于路径图,反锯齿的渲染、渐变、图片、颜色、坐标空间转换和PDF文档创建、显示和解析。虽然API是基于C的,但是却采用了基于对象的方式抽象了画图对象,使它更容易存储和重用你的图像内容。

        更多关于如何使用Quartz绘图,参考Quartz 2D Programming Guide和Core Graphics Framework Reference。 Core Image Framework

        iOS5引入,提供了一套强大的内置过滤器用于操作视频和静态图片。你可以使用内置的过滤器实现简单的操作(触摸纠正照片)以及高级的操作(面部检测)。使用这些过滤器的优势是,它们在以无损的方式运作,保证你的原始图像是不会改变。此外,Core Image利用可用的CPU和GPU处理能力,确保操作是快速有效的。

        CIImage类提供了访问标准过滤器的方法,你可以使用它来提高照片的质量。创建其他类型的过滤器,你可以创建和配置一个CIFilter对象实现你需要的过滤器。

        更多关于Core Image Framework里类和过滤器的信息,参考 Core Image Reference Collection。 Core MIDI Framework

        iOS4.2引入,提供了标准的方法与MIDI设备通信,包括硬件键盘和合成器。你用这个框架来发送和接收MIDI的消息以及与能连接到iOS设备的设备交互(通过网路相连或者桥接器)。

        更多关于这个框架的信息,参考 Core MIDI Framework Reference

        Core Text Framework

        iOS3.2引入,包含一组简单的、高性能的基于C的接口布局和处理文字.Core Image Framework提供了一个完整的文本布局引擎,您可以管理文本在屏幕上的位置,你管理的文本可以使用不同的字体以及渲染属性.

        这个框架主要用于处理复杂文本,比如文本处理程序.如果你的应用程序只需要简单的文本输入和显式.你应该继续使用UIKit中的文本类.

        更多关于这个框架的信息,参考Core Text Programming Guide和Core Text Reference Collection.

        Core Video Framework

        iOS4引入,提供接口导入和导出图像数据和图像元数据,这个框架利用Core Graphics数据类型和函数支持所有iOS上可用的图像类型.

        iOS6之后,你可以使用这个框架来访问IPTC、EXIF元数据属性和图像.

        更多这个框架的函数和数据类型,参考Image I/O ReferenceCollection.

        GLKit Framework

        iOS5引入,包含一组基础工具类,简化了创建OpenGL ES2.0程序。GLKit支持四个关键领域的应用开发:

        1、GLKView和GLKViewController提供一个标准的实现视图和关联启用OpenGL ES的渲染循环。视图管理层framebuffer对象代表应用程序,你的程序只需要往上面画。

        2、GLKTextureLoader提供了图像转换和加载程序到您的应用程序,让它自动加载纹理图像到你的上下文,它可以同步或一部加载纹理。异步加载纹理时,您的应用程序提供了完成处理block,当你的被加载到上下文的时候触发。

        3、框架提供了实现GLKit向量、矩阵、四元素以及矩阵堆栈操作,提供相同的功能在Open GL ES 1.1中

        4、GLKBaseEffect、GLKSkyboxEffect和GLKReflectionMapEffect类提供现有的、可配置的图形着色器,实现常用的图形操作。特别是在OpenGL ES 1.1规范中,GLKBaseEffect类实现了照明和素材模型,简化了从OpenGL ES1.1到OpenGL ES 2.0迁移所需的工作。

        更多关于GLKit框架中类的介绍,参考 GLKit Framework Reference.

        Media Player Framework

        提供播放音频和视频内容高层支持,你可以使用系统标准接口播放视频。

        在iOS3.0,增加对用户iTunes音乐库的访问支持,你可以播放单个音乐和音乐列表,搜索歌曲以及呈现媒体选择界面给用户。

        在iOS3.2,增加了视频窗口的大小调整接口(以前视频只能是全屏的)。此外,增加了众多的接口来配置和管理电影的播放。

        在iOS5,增加了“正在播放”信息在锁屏界面。这些信息可以通过AirPlay显示在Apple TV上。还有接口能监测视频是否正在使用AirPlay显示。

        更多关于Media Player Framework中类的信息,参考Media Player Framework Reference.更多关于如何使用iTunes列表的信息,参考 iPod Library AccessProgramming Guide。

        OpenAL Framework

        OpenAL接口是一个跨平台的音频接口,你可以在游戏或其他程序中用它来完成高性能、高质量的音频服务。因为是一个跨平台的OpenAL标准,所以很容易使用它来实现跨平台。

        更多OpenAL的信息,以及如何使用它,参考

        OpenGL ES Framework

        提供工具来绘制2D和3D内容。它是一个基于C的框架,与设备硬件紧密合作,为全屏游戏提供高帧率渲染。通常OpenGL框架结合EAGL接口使用,这些接口是OpenGL ES框架的一部分,在OpenGL ES绘画代码和UIKit框架中的视图、窗口对象之间提供接口。

        iOS3.0之后,包含了既支持OpenGL ES 2.0又支持OpenGL ES 1.1的接口规范。2.0规范提供了支持片段或顶点着色的着色器(仅支持部分iOS设备,且iOS系统在3.0以上)。1.1规范支持所有iOS设备以及所有iOS系统版本。

        更多关于如何在应用程序中使用OpenGL ES的信息,参考OpenGL ES Programming Guide for iOS。

        Quartz Core Framework
        包含Core Animation接口,Core Animation是一个先进的动画合成技术,优化渲染路径来实现复杂的动画和视觉效果。它提供了一个高层次的OC接口(使用硬件性能)来配置动画效果,你可以使用OC接口创建自定义的动画。
        更多关于如何在程序中使用Core Animation的信息,参考Core Animation Programming Guide以及Core Animation ReferenceCollection。

    4. Cocoa Touch层:

      Address Book UI 框架 Address Book UI 框架(AddressBookUI.framework)是一套Objective-C的编程接口,可以显示创建或者编辑联系人的标准系统界面。该框架简化了应用程序显示联系人信息所需的工作,另外它也可以确保应用程序使用的界面和其他应用程序相同,进而保证跨平台一致性。

      Event Kit UI 框架 iOS 4.0引入了Event Kit UI框架(EventKitUI.framework),它提供一个视图控制键可以展现查看并编辑事件的标准系统界面。Event Kit框架(查看“Event Kit框架”可获得该框架的进一步信息)的事件数据是该框架的构建基础。

      如需进一步了解Event Kit UI框架类和方法,请查看Event Kit UI框架参考。Game Kit 框架 iOS 3.0引入了Game Kit框架(GameKit.framework)。该框架支持点对点连接及游戏内语音功能,您可以通过该框架为应用程序增加点对点网络功能。点对点连接以及游戏内语音功能在多玩家的游戏中非常普遍,不过您也可以考虑将其加入到非游戏应用程序。此框架通过一组建构于Bonjour之上的简单而强大的类提供网络功能,这些类将许多网络细节抽象出来,从而让没有网络编程经验的开发者可以更加容易地将网络功能整合到应用程序。

      iAd 框架 iOS 4.0引入了iAd框架 (iAd.framework)。您可以通过该框架在应用程序中发布横幅广告。广告会被放入到标准视图,您可以将这些视图加入到用户界面,并在合适的时机向用户展现。这些视图和苹果的公告服务相互协作,自动处理广告内容的加载和展现,同时也可以响应用户对广告的点击。

      Map Kit 框架 iOS 3.0导入了 Map Kit框架 (MapKit.framework) ,该框架供一个可被嵌入到应用程序的地图界面,该界面包含一个可以滚动的地图视图。您可以在视图中添加定制信息,并可将其嵌入到应用程序视图,通过编程的方式设置地图的各种属性(包括当前地图显示的区域以及用户的方位)。您也可以使用定制标注或标准标注(例如使用测针标记)突出显示地图中的某些区域或额外的信息。

      在iOS 4.0系统中,该框架开始支持可拖动标注以及定制覆盖层。可拖动标注允许您通过编程方式或通过用户交互方式重定位某个标注的位置。覆盖层可用于创建多个点组成的复杂地图标注。地图表面诸如公交路线、选举地图、公园边界或者气象信息(例如雷达数据)等可以使用覆盖层进行显示。

      Message UI 框架 iOS 3.0引入了Message UI框架 (MessageUI.framework)。您可以利用该框架撰写电子邮件,并将其放入到用户的发件箱排队等候发送。该框架提供一个视图控制器界面,您可以在应用程序中展现该界面,让用户通过该界面撰写邮件。界面的字段可以根据待发送信息的内容生成。例如您可以设置接收人、主题、邮件内容并可以在邮件中包含附件。这个界面允许用户先对邮件进行编辑,然后再选择接受。在用户接受邮件内容后,相应的邮件就会放入用户的发件箱排队等候发送。

      在iOS 4.0及其后续的系统中,该框架提供一个SMS撰写面板控制器。您可以通过它在应用程序中直接创建并编辑SMS信息(无需离开应用程序)。和电子邮件撰写界面一样,该界面也允许用户先编辑SMS信息再发送。

      UIKit 框架 UIKit框架 (UIKit.framework)的Objective-C编程接口为实现iOS应用程序的图形及事件驱动提供关键基础。iOS系统所有程序都需要通过该框架实现下述核心功能:

      ~ 应用程序管理
      ~ 用户界面管理
      ~ 图形和窗口支持
      ~ 多任务支持
      ~ 处理触摸及移动事件。
      ~ 代表标准系统视图和控件的对象
      ~ 文本和web内容相关操作
      ~ 剪切、复制以及粘贴
      ~ 使用动画显示用户界面内容
      ~ 通过URL方式将其他应用程序整合到系统
      ~ 苹果推送通知服务支持,请查看“苹果推送通知服务 ”
      ~ 为残疾用户提供辅助功能
      ~ 本地通知的调度和发送
      ~ 创建PDF
      ~ 使用定制输入视图(其行为类似系统键盘)
      ~ 创建和系统键盘进行交互的定制文本视图
      除了链编至应用程序的基础代码,UIKit还为下述和设备紧密相连的功能提供支持:
      ~ 加速器数据
      ~ 内置相机(存在相机的设备)
      ~ 用户的图片库
      ~ 设备名称和模型信息
      ~ 电池状态信息
      ~ 距离感应器信息
      ~ 来自绑定听筒的远程控制信息

    常用组件

    1. Storyboard和SourceCode

      1. image-20210705161120900.png
      2. image-20210705161203320.png
    2. UILabel

      1. @interface UILabel : UIView <NSCoding, UIContentSizeCategoryAdjusting>

        1. @interface

          不要与Java中的interface混淆, OC中@interface+@implementation共同代表一个类,相当于Java中的Class.

        2. NSCoding协议

          OC中的每个原生类都实现了NSCoding协议,在归档过程中进行了转码.

        3. UIContentSizeCategoryAdjusting

          动态类型文字大小

      2. Propertys:

        1. @property(nullable, nonatomic,copy) NSString *text; // default is nil

        2. @property(null_resettable, nonatomic,strong) UIFont *font UI_APPEARANCE_SELECTOR; // default is nil (system font 17 plain)

        3. @property(null_resettable, nonatomic,strong) UIColor *textColor UI_APPEARANCE_SELECTOR; // default is labelColor

        4. @property(nullable, nonatomic,strong) UIColor *shadowColor UI_APPEARANCE_SELECTOR; // default is nil (no shadow)

        5. @property(nonatomic) CGSize shadowOffset UI_APPEARANCE_SELECTOR; // default is CGSizeMake(0, -1) -- a top shadow

        6. @property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentNatural (before iOS 9, the default was NSTextAlignmentLeft)

        7. @property(nonatomic) NSLineBreakMode lineBreakMode; // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text

        8. // the underlying attributed string drawn by the label, if set, the label ignores the properties above.

          @property(nullable, nonatomic,copy) NSAttributedString *attributedText API_AVAILABLE(ios(6.0)); // default is nil

        9. // the 'highlight' property is used by subclasses for such things as pressed states. it's useful to make it part of the base class as a user property

          @property(nullable, nonatomic,strong) UIColor *highlightedTextColor UI_APPEARANCE_SELECTOR; // default is nil

        10. @property(nonatomic,getter=isHighlighted) BOOL highlighted; // default is NO

        11. @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled; // default is NO

        12. @property(nonatomic,getter=isEnabled) BOOL enabled; // default is YES. changes how the label is drawn

        13. // this determines the number of lines to draw and what to do when sizeToFit is called. default value is 1 (single line). A value of 0 means no limit
          // if the height of the text reaches the # of lines or the height of the view is less than the # of lines allowed, the text will be
          // truncated using the line break mode.
          @property(nonatomic) NSInteger numberOfLines;

        14. // these next 3 properties allow the label to be autosized to fit a certain width by scaling the font size(s) by a scaling factor >= the minimum scaling factor
          // and to specify how the text baseline moves when it needs to shrink the font.
          @property(nonatomic) BOOL adjustsFontSizeToFitWidth; // default is NO
          @property(nonatomic) UIBaselineAdjustment baselineAdjustment; // default is UIBaselineAdjustmentAlignBaselines
          @property(nonatomic) CGFloat minimumScaleFactor API_AVAILABLE(ios(6.0)); // default is 0.0

        15. // Tightens inter-character spacing in attempt to fit lines wider than the available space if the line break mode is one of the truncation modes before starting to truncate.
          // The maximum amount of tightening performed is determined by the system based on contexts such as font, line width, etc.
          @property(nonatomic) BOOL allowsDefaultTighteningForTruncation API_AVAILABLE(ios(9.0)); // default is NO

        16. // Specifies the line break strategies that may be used for laying out the text in this label.
          // If this property is not set, the default value is NSLineBreakStrategyStandard.
          // If the label contains an attributed text with paragraph style(s) that specify a set of line break strategies, the set of strategies in the paragraph style(s) will be used instead of the set of strategies defined by this property.
          @property(nonatomic) NSLineBreakStrategy lineBreakStrategy;

      3. method
        // override points. can adjust rect before calling super.
        // label has default content mode of UIViewContentModeRedraw

          • (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines;
          • (void)drawTextInRect:(CGRect)rect;
    3. UIView, UIButton, UITextField, UITextArea, UIScrollView, UITableView, UIWebView(WKWebView)

    相关文章

      网友评论

          本文标题:iOS入门

          本文链接:https://www.haomeiwen.com/subject/bsstpltx.html