Tag: iOS应用

带有TypographyKit的iOS中的动态类型

动态类型是iOS 7中引入的功能,允许用户更改跨iOS使用的默认字体大小。 它主要用于支持视觉障碍的用户,但实际上,出于各种原因,许多iOS用户只是更喜欢较小/较大的阅读尺寸。 可以从“显示和亮度”->“文本大小”中的“设置”应用程序更新,也可以从“常规”->“辅助功能”->“大文本”中更新设置。 如果使用前一种设置,则只有七个字体大小可供选择,而在后一部分中,有一个“较大的可访问性大小”开关,如果启用,则允许用户从另外五个较大的字体大小中进行选择。 没有开发人员的额外努力,App Store中的应用程序不会自动支持动态类型(与Android不同)。 在iOS 7中,Apple提供了六个UIFontTextStyles,即为屏幕上的每个标签分配一个文本样式,例如标题文本或正文文本,这将使应用程序开发人员可以按如下方式检索该文本样式的首选字体: UIFont.preferredFont(forTextStyle:.body) 当用户调整“设置”应用中的字体大小滑块时,此方法返回的字体的磅值会相应更新。 在iOS 7时代,实现动态类型具有挑战性,因为要求应用程序开发人员将每个显示文本的UIKit元素分类为可用的UIFontTextStyle类别之一,以便检索该类别的首选字体。 此外,返回的首选字体将是系统字体,即Helvetica Neue Light(在9之前的iOS版本上;在iOS 9及更高版本中默认为旧金山),这意味着开发人员在支持动态类型时无法使用自定义字体(更多信息请参见稍后)。 由于这些原因,App Store中的应用程序通常不支持动态类型。 如果用户在“设置”应用程序中更新了字体大小首选项,则已经打开且支持动态类型的应用程序通常直到用户关闭并重新启动后才会更新(取决于对UIFont.preferredFont(forTextStyle: )。 每次用户使用“设置”应用程序中的滑块更新“动态类型”首选项时,都会更新属性UIApplication.shared.preferredContentSizeCategory的值,并返回新的UIContentSizeCategory值,即滑块上的每个槽口都对应一个UIContentSizeCategory值。 为了更新应用程序的字体大小而不必关闭并重新打开应用程序,开发人员可以使用NotificationCenter观察(UIContentSizeCategory)didChangeNotification,然后调用UIFont.preferredFont(forTextStyle :),该字体将返回具有更新大小的字体每个UIKit元素都会在屏幕上显示文本。 实际上,在每个UIViewController中观察此通知并以编程方式在屏幕上更新每个文本UIKit元素通常会导致UIViewController Controller肿,其中包含许多其他代码来支持动态类型。 出于上述原因,创建了TypographyKit。 TypographyKit允许应用程序使用自定义字体,同时支持来自iOS 9+的Dynamic Type,而无需大量额外代码。 如果使用Cocoapods,可以通过将以下行添加到项目Podfile中,然后运行“ pod install”命令来将TypographyKit合并到您的Xcode项目中: pod “TypographyKit” 对于那些使用迦太基的人,可以通过在项目的Cartfile中添加以下行,运行“迦太基更新–平台iOS”来构建框架,然后手动为相关Xcode项目目标链接构建框架,从而安装TypographyKit: github “rwbutler/TypographyKit” 下一步是将TypographyKit配置文件添加到您的项目中(请确保将其添加到“副本捆绑资源”构建阶段)。 该文件可以采用属性列表或JSON格式,并分别命名为TypographyKit.plist或TypographyKit.json。 TypographyKit配置指定在应用程序中使用的印刷样式(即UIFontTextStyles)以及每种样式的外观。 它还指定字体应如何随着UIContentSizeCategory的更改而缩放: { “ typography-colors”:{ “ background”:“较淡的宝蓝色”, “ gold”:“#FFAB01”, “宝蓝色”:“#08224C”, “ text”:“ gold” }, “印刷工具包”:{ […]

iOS应用程序开发如何使您的业务发展受益

根据一项调查,Google Play商店拥有220万个应用程序,而App Store仅发布200万个应用程序。 可以说,Google的Play商店排名第一,而App商店紧随其后。 但是不管事实如何,许多企业主倾向于选择iOS平台来创建自己的企业应用程序。 但是,在当今时代,随着移动设备的使用不断增加,毫无疑问,iOS和Android是大多数应用程序开发人员使用的主要平台。 无论哪种方式,这两个平台都有各自的优势。 但是,如果考虑到iPhone专用应用程序的需求和接受度,毫无疑问iOS应用程序开发将是赢家。 尽管如此,在本文中,我们将讨论iOS应用对您的业务的优势。 放心,在您阅读此内容后,您会立即发现一家专门从事iOS移动应用开发的公司,这将使您的杀手级应用想法变为现实。 为您的企业开发iOS应用程序的优势 改善您的业务销售 如果您想增加业务销售额,高效创建的iPhone应用程序肯定会帮助您推广产品,服务和品牌,以吸引越来越多的用户。 另一方面,iPhone由精通技术的用户组成,他们喜欢使用高级解决方案和技术来实现其目标。 因此,iOS移动应用程序开发可以为您的受众群体提供用户友好且功能强大的应用程序,从而为您提供很多帮助。 实际上,这种应用程序将帮助您的企业以成本效益提高生产力。 增强客户参与度 许多iPhone用户正在寻找可轻松与企业联系的应用程序。 这就是为什么许多企业或企业使用应用程序以改善其流程并提高可用性水平的原因。 另一方面,拥有自己的业务应用程序的好处是,您将能够与客户无缝连接。 结果,您将能够提高您的客户参与度。 降低成本 应用程序可减少纸质时事通讯和SMS消息的费用。 实际上,iPhone应用程序将通过直接,安全,即时地向客户发送消息来缩短通信时间。 除此之外,它还可以减少接听电话和信息请求的工作量。 有关更多查询, 联系我们 。

iOS应用开发过程的9大准则

iOS是两个主要的移动操作系统之一,因此在构建应用程序时几乎不可避免。 但是与Android不同,iOS拥有更严格的规则。 以下是一些指南,可帮助您进行iOS应用开发过程 。 iOS应用开发过程的9大准则: 1)规划并勾勒出您的想法:首先,您需要进行规划,您的应用程序将是什么,为什么人们会选择您的应用程序? 如果这些操作正确,则可以节省大量时间和混乱。 在项目经理的指导下完善您的想法并草拟技术特定的文档。 2)研究:找出是否有与您相同的其他应用,研究设计,找到有关技术要求的信息,最后找到如何营销您的应用并从中获利。 3)创建线框:线框是UX(用户体验)路线图,显示用户选项,并且还包含信息体系结构蓝图。 4)设计:要创建吸引人的视觉设计,必不可少的是直观的UI(用户界面)和引人入胜的UX(用户体验) 。 在开发的这一部分,设计师需要处理屏幕功能(图标,图形,动画),并为开发团队生成设计原型。 5)软件体系结构规划:在此阶段,前端和后端开发人员将进行协作,这与开发过程之前的设计阶段并行进行,以确保软件对于应用程序是否稳定和可扩展。 •模型视图控制器范例(MVC)是iOS应用开发的核心原则,分为3个组件:用户界面,数据和软件 6)前端和后端开发:该应用程序的前端和后端开发都是协调一致的。 当前端进行代码开发以为应用程序创建不同的设计元素时,后端开发指的是服务器部分,该部分专注于应用程序的工作方式。 前端应用程序开发包括: •数据库缓存 •同步数据库 •开发模型和线框 •UI设计与开发 •根据需要进行改进 •测试 •部署 后端开发包括: •设置后端结构 •用户帐户和身份验证的管理 •维护服务器端功能 •定制用户体验 •通过社交网站与第三方进行数据集成 •推送通知服务 7)测试阶段:由于Apple的批准和提交过程比较困难,因此这一部分至关重要。 在这里,开发人员逐个屏幕地浏览以下功能,以确保没有错误,并且应用程序可以正常运行: •测试用例准备 •脚本自动识别和修改 •手动和自动测试 •可用性测试 • 性能测试 •安全和合规性测试 •设备测试 8)将应用程序提交到App Store:要在App Store中发布应用程序并不容易,因为它需要一些步骤: •创建应用程序ID或标识符 •创建用于分发的iOS供应配置文件 •在Xcode中配置目标的构建设置 •创建应用商店列表 •创建发布版本 •填写版本信息 •提交版本以供审核 •应用发布 9)维护应用程序的定期更新:完成应用程序后,请密切注意定期更新,以确保您的应用程序支持所有最新的iOS更新和开发。 从最初的构想到完成,这是一条很长的路要走,但是规划每个步骤都可以增加成功的机会!

简单选项弹出框

您遇到了多少次需求,需要显示一个弹出窗口,该弹出窗口显示可供选择的选项列表。 在某些情况下,我们还会显示刻度线,以确定已经选择了哪个选项。 假设您创建了一个视图控制器,其中显示了要排序的选项,升序和降序以供选择。 外观如下图所示。 现在过了几天,您还需要显示一个弹出窗口,该弹出窗口显示用于选择按选项排序的选项。 我经常看到开发人员编写新的viewcontroller来显示这些选项以供选择,如下图所示。 现在,我们无需使用协议,而是可以使用协议并创建可以显示任何类型选项的通用ViewController。 此弹出窗口还将根据选项的大小和文本来调整大小。 让我们在下一部分中进行此操作。 让我们首先记下我们的要求: 弹出框应显示选项对象的数组。 选项将是一个对象,该对象可以提供要为该选项显示的文本,该文本的字体。 我还应说明是否选择了该选项。 如果选择了一个选项,则需要显示刻度线。 选择选项后,应将回调与选项对象一起发送到委托对象。 显示选项的UIViewController子类应该是通用的。 我们应该能够显示任何一组选项。 弹出窗口应调整为可变的文本宽度。 现在我们有了我们的要求,让我们开始编码。 让我们首先照顾最简单的部分。 让我们首先将选项对象需求转换为协议。 我们还使用协议的扩展来计算它显示的文本的大小。 它使实现保持清洁。 现在我们已经有了RBOptionItem协议,让我们在UITableViewCell上创建一个扩展,以便可以由RBOptionItem对其进行配置。 容易吧? 接下来,我们创建名为RBOptionItemListViewController的视图控制器 。 它执行以下操作: 将tableview设置为其视图。 包含RBOptionsItem的二维数组,称为item。 它使用这些项目来填充表格视图中的单元格。 设置项目时计算preferredContentSize 。 它具有可向其通知选项项目选择事件的委托对象。 它还充当tableview的数据源和委托对象。 它将modalPresentationStyle设置为popover类型。 这就是RBOptionItemListViewController最初显示的方式。 这里的关键部分是计算首选内容的大小。 看一下calculateAndSetPreferredContentSize()方法。 它将二维数组项展平为一维。 然后,在展平的数组上,我们调用reduce以获得弹出框所需的最大宽度。 同样,我们通过展平数组来计算选项项的最大数量,最后计算总高度和宽度,并将其设置为viewcontroller的preferredContentSize。 现在,我们在RBOptionItemListViewController上编写扩展,以使其充当表视图的数据源和委托。 在这里,我们使用项目将选项内容填充到表格视图中。 委托也用于通知选择事件。 我们的简单选项popover现在可以使用了。 让我们尝试一下。 让我们创建一个选项类型,分别选择排序顺序和排序依据。 创建一个简单的UIViewController子类,我们可以在其中进行测试。 您可以使用下面的要点自行编写。 使用此ViewController实例后,您将看到我们的弹出窗口正在按预期工作。 它是通用的,可以呈现选项项。 此处提供了此简单弹出窗口和演示的源代码。 您可以继续改进自己的实现。 到此结束本主题。 […]

2018年1月和2018年2月iOS独立开发思考和更新

嗨,朋友们, 简直无法相信一月和二月来了又快。 希望您今年有个开门红。 我想回顾一下过去两个工作量 一月份发生了很多事情。 Daily Vibes可在Apple App Store中获得。 如果尚未下载,请试一试 为Beta测试人员添加了一份注册表: 制作和编辑并上传视频 改善上述截图 改善上述视频 在撰写本文时,所有这些想法都浮出水面。 我希望将它们与下一个版本一起发布,希望在下周的某个时候发布。 然后,我将不得不等待,看看分析。 单个应用程序需要大量工作。 我开始欣赏独立开发者及其成功的产品。 您确实需要戴上能成功开展业务的所有帽子comfortable。 对我来说,营销是一个未知领域,我很犹豫开始学习它。 但是现在来看我,我可以制作图标,促销视频,并开始对增长具有战略意义 。 这是我享受的旅程,但充满挑战。 那是什么呢? 刚开始 。 今天就开始做一件小事。 并做到每一件事。 单。 天。 并且不要忘记这些小小的胜利是累积的。 我也铺平了道路,并做了所有必要的书面工作以添加应用程序订阅。 现在我要弄清楚我在这方面的策略😉 哦,在结束语中,我想保持一个宽松的2周出货周期……到目前为止,我一直坚持定期更新的时间表=)我希望我能保持这一水平! 感谢您的阅读,直到下次我的朋友。 真诚的 亚历克斯

Mockear和JSON的修改版本。

Hoy vamos voy a exploiar al que que me me resulta muyútilen midíaadíaen el trabajo y que nos ahorra mucho tiempo cuando estamos desarrollando。 网络服务和网络应用服务,从JSON到网络的任何形式的更改,都可以通过应用程序获取。 整个教程的学习过程,请在查尔斯·梅阿尤达·恩·迪亚和迪埃斯·迪埃塔皮亚斯进行。 MacOS High Sierra 10.13.4,XCode 9.3和Charles 4.2.1 vergo de pago。 Vamos是必需的,可以在Charles en un Ordenador上安装,配置在任何前面的面板上,也可以在查验后的位置上使用。 西娅·蒂内斯·埃尔·恩特尔诺·诺瓦莫斯·埃斯帕拉·马斯·瓦莫斯·达琳·卡尼亚! 初级访问者查尔斯和本地化终端响应者间拦截器对模型的修改。 Pulsamosbotónderecho sobre la URL deseada y en laúltimaopciónde la ventana紧急情况查尔斯no aparece 地图本地 esto es […]

成功开发iOS应用的重要方面

每个移动应用程序开发人员都使用自己的视野和技术技能来制作具有独特方面的高性能应用程序。 iOS是最先进的软件,可用于为iPhone和各种相关小工具创建出色的应用程序。 有了一系列想法,概念和策略,开发具有各种前沿功能的功能齐全的iOS应用变得非常容易。 知道iOS应用开发需要专业知识和广阔的视野,因此许多开发人员分析了多个方面,以在开发过程中取得良好的结果。 许多iOS应用程序开发策略师在定制应用程序的用户界面,功能和许多功能时都意识到了这一滞后。 但是,了解以下成功开发iOS应用程序的主要因素很重要: 不可否认的设计 用户体验会限制吸引人的布局和醒目的图形,从而在用户首次与应用进行交互时吸引用户的注意力。 永远记住,用户每次单击都喜欢令人愉快的布局,这就是为什么,使用复杂的编码和技术自定义用户界面以在iOS应用程序开发中做出正确的努力很重要。 著名的iOS应用开发公司的每个开发人员都必须使用出色的图形和布局来确定应用设计过程的优先级。 跨平台兼容性 苹果公司基于iOS推出了新的和更新的小工具,这对iOS应用程序开发人员来说是一个巨大的挑战,因为他们面临兼容性问题。 无论智能iOS小工具的屏幕尺寸和功能如何,都必须确保iOS应用可以在多个Apple设备上平稳运行。 独特的概念和想法 即使一个想法对于iOS应用程序开发是可行的,也必须尝试向用户展示一些新东西。 人们每天都在探索可数的应用程序,这就是为什么自定义具有少量非凡功能的应用程序以进行iOS应用程序开发对于保留用户更长的时间至关重要。 每个新的和真实的想法都会培养出更好的概念,每个iOS应用程序开发人员都可以使用,因此,无需惊慌。 苹果商店的准则和技术 用户搜索相关应用时,许多iOS应用仍处于后台。 为什么? 简而言之,许多iOS应用程序的功能缺少主要功能,无法帮助它们出现在热门搜索中。 为了成功开发iOS应用,每个开发人员都需要收集有关iOS应用商店的条款和条件的适当知识。 如果有人不熟悉Apple商店的政策,那么这将是成功的iOS应用程序开发过程中的主要障碍。 营销与推广-除了iOS应用开发之外,开发人员还需要为在多个社交媒体渠道上推广应用做准备。 因此,这些都是成功开发iOS应用程序的关键因素,每个开发人员都必须考虑这些因素,以得出令人满意的结果。 有关更多信息,请与我们联系 。

我2018年最好的第三方iOS库

在过去的几个月中,我接受了挑战,将我的理论ios技能付诸实践。 我们有一个仅在Android平台上存在的应用程序,我们需要创建一个iOS应用程序,以便迎合使用iOS设备的客户。 与往常一样,在构建应用程序时,使用由其他开发人员构建,尝试和测试的第三方库是有意义的。 Github是我发现iOS很棒的开源库的最佳去处。 不要重新发明轮子,只需重新调整轮子即可。 —安东尼·安格洛 因为我不想重新发明轮子,所以我决定使用一些第3方库。 与我决定自己编写其中一些库相比,这减少了我的开发时间,并可能节省了一些调试时间(是,几天days)。 以下是一些帮助我构建iOS应用程序的库: Alamofire 大多数移动应用程序都与后端服务进行通信,而我们的服务也不例外。 我发现Alamofire是一个易于使用的Swift网络库。 感觉就像是iOS开发生态系统的翻新。 我还能够快速将插件功能添加到库中,因为其他开发人员已经构建了与Alamofire交互的出色库。 一些示例包括:AlamofireLogger和AlamofireJsonToObjects。 图表 Android开发人员熟悉MPAndroidChart。 该库与iOS / tvOS / OS X平台的Swift等效。 使用此库可以轻松创建精美的图表/图形。 我还喜欢每种图表类型的示例项目都易于理解和定制。 Firebase库 Firebase附带了许多可用于构建应用程序的库。 我主要使用性能库,Crashlytics和Firebase消息传递。 性能库有助于跟踪网络通话和屏幕渲染的质量。 Crashlytics可帮助您确定应用中的问题(严重和非严重错误)。 它有一个漂亮的仪表板,显示了相关信息,可以帮助修复开发人员来解决问题。 Firebase Messaging用于处理我们应用中的推送通知。 IQKeyboardManager 来自Android世界。 我真的不认为我会为软件键盘而烦恼,所以我很惊讶iOS默认键盘上没有简单的手势。 这样的图书馆让我很高兴。 使用IQKeyboardManger,我不必编写代码就可以在完成TextField编辑后关闭键盘,也不必编写代码以移至表单中的下一个字段,也不必编写其他代码来确保虚拟键盘不会显示时覆盖一个字段。 最好的部分是,我不必为此输入太多代码。 我刚刚添加了库和一行代码,所有这些开始工作。 SwiftValidator 只要您的应用程序中有像TextField这样的开放式字段,输入验证就很重要。 我使用SwiftValidator是因为它易于设置和使用。 当我开始使用该库时,有20条预定义的规则。 规则用于确保只有遵循验证规则,才能将TextField中的文本视为有效。 可可豆 不,这不是图书馆。 它是Swift的依赖项管理器。 我也必须潜入,因为它也很重要😉。 这就像Android世界的gradle 。 它帮助我简化了添加这些第三方库的过程。 如果不使用此依赖项管理器,则需要将依赖项(框架)作为嵌入式二进制文件添加到我的项目中,与使用CocoaPods相比,这不是一个简单的过程。 感谢您的阅读,并请让我了解其他可以简化iOS开发的开源库。 干杯👋🏻。

最大化iOS 11中的连接性

2017年8月24日 我们已经让您知道了要为iOS 11准备的事情,现在我们正在研究更具体的内容:即将到来的iOS更新将如何处理较差的网络连接。 外行用户只需要知道您使用的移动数据可能会比更新到iOS 11之前要多一些。但是对于我们的开发人员,我们将在下面深入探讨此主题。 戴上工程师帽! 在iOS 11中,Apple对URLSession系列API进行了许多改进。 这些改进从开发人员的生活质量更新到显着的性能提升,无疑将改善整个平台的用户体验。 在本文中,我们将特别介绍两项改进:URLSession内置的多路径TCP支持和可达性监视。 多路径TCP 优雅地处理恶劣的网络条件是应用程序精心打造和完善的必然标志。 与手机上的其他大多数应用程序相比,您是否注意到Siri似乎很少有连接问题吗? 原因是多路径TCP。 当Siri发出网络请求时,该应用实际上打开了与服务器的两个连接:一个通过Wi-Fi,一个通过蜂窝。 这些连接一起工作,可以尽快将数据传送到应用程序。 只要您的设备在两个通道之一上都具有良好的连接,Siri就可以正常工作。 多路径TCP是一种相对较新的协议,专门为移动设备设计。 它建立在TCP之上,因此可以从TCP内置的可靠性和拥塞控制中受益。 此外,MPTCP允许在无线和蜂窝连接之间无缝切换。 它甚至支持同时使用两个连接以提高吞吐量(稍后会对此进行更多介绍)。 为了利用MPTCP,在客户端和服务器级别都需要支持。 当前,并非所有服务器基础架构都支持MPTCP,但像AWS这样的流行供应商都支持。 使用iOS 11,应用程序开发人员现在也可以在客户端级别支持MPTCP。 模式 在iOS 11中,应用程序可以选择三种不同的MPTCP模式:切换模式,交互模式和聚合模式 切换模式:如果可能,将通过Wi-Fi建立连接。 如果Wi-Fi网络条件不佳,系统将自动启动蜂窝链路并将流量传输到该链路。 随着Wi-Fi条件的改善,流量将被转移回Wi-Fi连接,并且蜂窝链路将被拆除。 本质上,切换模式试图在保持可接受性能的同时最小化蜂窝使用。 所有这些都发生在URLSession中,并且对我们的应用程序完全透明。 交互模式:系统将立即启动Wi-Fi和蜂窝链接。 尽管仍然首选Wi-Fi,但如果发现Wi-Fi条件不理想,该系统将积极过渡到蜂窝网络。 交互模式针对性能进行了优化,但以蜂窝数据的使用为代价。 Siri使用交互模式。 聚合模式:与交互模式一样,系统将立即启动两个链接。 但是, 两个链接将一起使用以增加网络的整体吞吐量。 理论上,在10mbps Wi-Fi连接和5mbps蜂窝网络上使用聚合模式可能会导致与服务器的15mbps连接! 虽然这很酷,但会导致大量的蜂窝数据使用。 因此,Apple不允许在生产应用程序中运行聚合模式。 但是,开发人员可以通过“设置”应用中的“开发人员设置”屏幕使用汇总模式。 无论使用哪种模式,如果您的应用达到了Wi-Fi辅助数据限制,蜂窝链接将被禁用。 如果要测试应用程序,请注意这一点,并注意MPTCP不再切换到蜂窝网络。 这很好地表明您可能需要重新考虑哪些呼叫选择了加入MPTCP。 选择加入 那么,您如何选择加入? 苹果公司做到了这一点非常容易。 只需在Xcode中向您的应用程序添加“ multipath”功能,然后将URLSessionConfiguration上的multipathServiceType属性设置为.handover或.interactive。 而已! 可达性 […]

自动版面

自动版式会根据对这些视图施加的约束来动态计算视图层次结构中所有视图的大小和位置。 例如,您可以限制按钮的位置,使其在“图像”视图中水平居中,并且按钮的顶部边缘始终保持在图像底部下方8个点。 如果图像视图的大小或位置发生更改,则按钮的位置会自动调整以匹配。 这种基于约束的设计方法使您可以构建可动态响应内部和外部更改的用户界面。 当超级视图的大小或形状发生更改时,将发生外部更改。 每次更改后,您都必须更新视图层次结构的布局,以最佳利用可用空间。 以下是一些外部变化的常见来源: 用户调整窗口大小(OS X)。 用户进入或离开iPad(iOS)上的拆分视图。 设备旋转(iOS)。 活动的呼叫和录音栏会出现或消失(iOS)。 您要支持不同的尺寸等级。 您要支持不同的屏幕尺寸。 这些更改大多数可以在运行时发生,并且需要您的应用程序动态响应。 其他功能,例如对不同屏幕尺寸的支持,则表示该应用程序可以适应不同的环境。 即使屏幕大小通常在运行时不会改变,创建自适应界面也可以使您的应用在iPhone 4S,iPhone 6 Plus甚至iPad上同样良好地运行。 自动布局也是支持iPad上的“滑行视图”和“拆分视图”的关键组件。 当用户界面中的视图或控件的大小更改时,就会发生内部更改。 以下是内部变更的一些常见来源: 应用程序显示的内容发生更改。 该应用程序支持国际化。 该应用程序支持动态类型(iOS)。 当您的应用程序的内容更改时,新内容可能需要与旧内容不同的布局。 这通常发生在显示文本或图像的应用程序中。 例如,新闻应用程序需要根据各个新闻文章的大小来调整其布局。 同样,照片拼贴必须处理各种图像尺寸和宽高比。 国际化是使您的应用程序能够适应不同语言,地区和文化的过程。 国际化应用程序的布局必须考虑到这些差异,并在应用程序支持的所有语言和区域中正确显示。 国际化对布局有三个主要影响。 首先,当您将用户界面翻译成其他语言时,标签需要占用不同的空间。 例如,德语通常比英语需要更多的空间。 日语经常需要更少的东西。 其次,即使语言不变,用于表示日期和数字的格式也可能因地区而异。 尽管这些更改通常比语言更改更微妙,但用户界面仍然需要适应大小上的细微变化。 第三,更改语言不仅会影响文本的大小,还会影响布局的组织。 不同的语言使用不同的布局方向。 例如,英语使用从左到右的布局方向,阿拉伯语和希伯来语使用从右到左的布局方向。 通常,用户界面元素的顺序应与布局方向匹配。 如果按钮在英语视图的右下角,则应该在阿拉伯语的左下角。 最后,如果您的iOS应用支持动态类型,则用户可以更改应用中使用的字体大小。 这可以更改用户界面中任何文本元素的高度和宽度。 如果用户在应用程序运行时更改字体大小,则字体和布局都必须适应。 布局用户界面的主要方法有三种。 您可以以编程方式对用户界面进行布局,可以使用自动调整大小的遮罩来自动执行对外部更改的某些响应,或者可以使用“自动布局”。 传统上,应用通过以编程方式为视图层次结构中的每个视图设置框架来布局用户界面。 该框架在超级视图的坐标系中定义了视图的原点,高度和宽度。 要布置用户界面,必须计算视图层次结构中每个视图的大小和位置。 然后,如果发生更改,则必须为所有受影响的视图重新计算框架。 在许多方面,以编程方式定义视图的框架提供了最大的灵活性和功能。 发生更改时,您可以按需进行任何更改。 但是,由于还必须自己管理所有更改,因此,设计一个简单的用户界面需要花费大量的精力进行设计,调试和维护。 […]