Tag: ios

对接动画,例如Youtube,JioCinema iOS

DockingView由TopView和Central视图两个视图组成。 当用户停靠时,只有顶视图可见,而中央视图被隐藏。 步骤3:初始化后,将您的视图相应地添加到topview和centralview。 步骤4:然后只需调用dockingview的方法:.present() 悠悠球!!!!! 停靠将添加到您的视图中,并将开始显示其凉爽感🙂 要添加更酷的功能(如UIViewController的overridable属性),可以在子类中重写以下方法,并在进入DockingViewClass和OverRidable方法和变量时可以重写更多方法。 有3种状态:展开,对接,关闭 发生对接时,上面的最后一个可重写方法一直被调用,其范围在0to1之间变化。 当scale == 0时,视图处于停靠状态;当scale === 1时,视图处于展开状态。 您可以根据比例值更改外部参数,这就像蛋糕上的糖霜一样。 处于停靠状态并可以向左或向右滑动时,可以从Superview中删除停靠视图。 这是我的观点。 谢谢,享受很棒的功能并发表评论。

Swift中的设计模式:第二部分-行为设计模式

在该系列的第一篇文章中,我讨论了创意设计模式。 现在,我将描述另一组称为行为设计模式的模式。 行为设计模式处理对象之间的交互方式。 它描述了对象之间如何进行通信,以及如何在不同对象之间破坏任务的步骤,从而提供了更大的灵活性并使得代码更具可测试性。 让我们跳到以下10个行为设计模式: 1.责任链 责任链是一种行为设计模式,可让我们在一系列处理程序之间传递请求,其中每个处理程序都决定处理请求或将请求沿着处理链传递。 有一个名为“ 级别”的枚举将“体育”管理细分为三个级别:州,国家和国际。 首先,让我们创建一个名为Sports的类,它将仅保留当前的体育管理水平。 然后,我们有了称为GameManagement的协议,该协议可以沿处理程序链传递责任。 StateSportsTeam , NationalSportsTeam和InternationalSportsTeam类实现了此协议。 如果运动级别不属于他们的管理层,他们会将责任转移给更高的管理层(或管理人员链)。 在操场上运行代码: 让 stateSportsTeam = StateSportsTeam() 让 nationalSportsTeam = NationalSportsTeam() 让 internationalSportsTeam = InternationalSportsTeam() stateSportsTeam.nextLevelManagement =国家运动队 nationalSportsTeam.nextLevelManagement = internationalSportsTeam let sports1 =体育(级别:Level.international) stateSportsTeam.manage(sports:sports1) let sports2 =体育(级别:国家级) stateSportsTeam.manage(sports:sports2) let sports3 =体育(等级:Level.state)stateSportsTeam.manage(体育:sports3) 输出: 由国际体育管理公司管理 由国家体育总局管理 由国家体育总局管理 2. 命令模式 在命令模式中,将执行命令的类(称为Invoker )与产生命令的类( ConcreteCommand )和知道如何执行该命令的类( Receiver […]

核心数据iOS Swift

2.创建项目后,您将获得“ CoreData.xcdatamodeld”,我们将创建模型实体和其他用途。 3.单击CoreData.xcdatamodeld创建一个实体。 点击“添加实体”按钮创建实体。 4.添加属性 现在,我们有了Entity和attribute,所以让我们开始将数据添加到Core Data中。 #将数据添加到核心数据 func saveData { 卫队让appDelegate = UIApplication.shared.delegate为? AppDelegate else {返回} // 1 让managedContext = appDelegate.persistentContainer.viewContext // 2 让实体= NSEntityDescription.entity(forEntityName:“ YourEntityName”,在:managedContext中)! 让person = NSManagedObject(实体:entity,insertInto:managedContext) // 3 person.setValue(nameValue,forKeyPath:“名称”) person.setValue(ageValue,forKeyPath:“ age”) // 4 做{ 尝试managedContext.save() people.append(人) let alert = UIAlertController(标题:“成功”,消息:“保存成功”,preferredStyle:UIAlertController.Style.alert) alert.addAction(UIAlertAction(title:“ Ok”,样式:UIAlertAction.Style.default,处理程序:nil)) self.present(警告,动画:true,完成:无) }将let错误捕获为NSError { //打印(“无法保存。\(错误),\(错误.userInfo)”)} } #从核心数据中检索数据 func getData(){ var […]

构建旅行照片共享iOS应用

你好! 我想向您展示如何构建相对简单的照片共享应用程序:将您的图像放置在当前位置的地图背景上。 您还可以添加一条短消息和您的姓名,以得到如下所示的图像(这样,您就可以将自己在很棒的假期中所拜访的东西吹嘘给朋友): 要遵循本教程,您需要一台装有xCode的Apple计算机和一个Apple开发者帐户。 创建项目 打开xCode并创建一个名为PicTravel的新项目。 选择“ 单一视图应用程序”模板: 给项目起一个名字,我们选择了PicTravel但是您可以选择其他喜欢的名字。 还要填写项目的组织名称和组织标识符: 最后一步是将新创建的项目保存在Developer文件夹中。 建立介面 在左侧面板中,打开Main.storyboard 。 这是我们构建应用程序界面的地方。 从右侧面板的底部拖动ImageView并将其放置在场景的中心。 调整其大小,使其覆盖所有内容(将其捕捉为出现的蓝线)。 如下图所示,使用约束对话框将ImageView固定到场景边距: 我们将使用它为应用程序的主屏幕放置背景图像。 从此处下载背景图像,然后从左侧面板中打开Assets.xcassets项,单击底部的“ +”按钮,然后添加一个名为Background的新图像集。 将下载的图像拖到“ 1x”占位符上,以得到这样的结果(在本教程中,我们将不使用“ 2x”和“ 3x”占位符,但是如果需要,可以为其添加更大分辨率的图像)。 现在,回到Main.storyboard ,选择ImageView ,然后从Attributes Inspector中选择Background图像,然后将Content Mode设置为Aspect Fill 。 现在是时候将新图像添加到我们的资产中,用于将要添加的“拍照”按钮了。 从此处下载图像,在Assets.xcassets中创建一个名为Button的新图像集,然后将图像拖动到1x占位符中,就像我们之前在背景中所做的那样。 接下来,在Main.storybord ,将一个按钮拖动到场景的中心。 将“ 类型”设置为“ Custom ,清除“ 标题” ,并将“ 背景”设置为我们刚刚创建的“ Button图像。 从“ 大小”检查器中 ,将的按钮设置为,并将高度设置为115 。 为按钮的with和height添加两个新约束(每个115),然后从Alignment Constriants中将按钮在容器中水平和垂直对齐。 现在,我们为用户的名称和消息添加两个文本字段。 如下图所示,将它们放置在下面的约束中。 不要忘记蓝色的指南,这些指南使您更容易放置。 要在两个元素之间创建约束,可以按住Ctrl键并拖动到另一个,然后从出现的弹出窗口中选择所需的约束类型。 对于消息文本字段: […]

知道如何进行单元测试的绝佳过程(您的Swift代码)

我将向您展示一种方法,该方法可以确定应测试的内容以及一些概念,使编写测试时的生活更加轻松。 在我职业生涯的某个时刻,我知道单元测试的重要性,但是我不知道如何测试代码。 许多人都面临着同样的问题。 我们阅读了有关如何开始的文章,但仍然很难将我们学到的东西应用到我们自己的代码中。 通常,我们没有那些仅对两个参数求和并返回结果的函数,我们在许多示例中都可以看到它。 好吧,我遇到了一个过程,这对我来说真的很容易。 我要说的第一件事是,您无需更改体系结构即可开始单元测试。 当某些开发人员听到某种结构可以使代码更具可测试性时,这是一个错误。 然后他们等到转移到这种新的编码方式开始编写测试。 让我们不要那样做! 如果要测试现有代码,则可能需要重构某些部分,但绝对不要更改您的体系结构! 消息是对象在面向对象的世界中彼此交谈的方式。 您希望对象执行方法时将消息传递给该对象。 获取属性值是相同的,并且适用于其他所有条件! 知道要测试什么的过程包含三个简单的步骤 ,并且都涉及消息。 1.确定消息的类型 消息有两种可能的类型:查询和命令。 这可能很明显,但是查询是当您要求某事时,而命令是当您告诉它要某事时。 查询具有返回值,但是在命令没有返回值时却不会更改任何状态,但是会产生一些副作用。 查询 =返回什么,什么也没改变 命令 =不返回任何内容并更改某些内容 2.标识消息的来源 一条消息可能有三个来源:传入,传出和发送给自己。 传入 :当一个对象从外部(另一个对象)接收到消息时。 传出 :当对象向外部发送消息时。 自我发送 :猜猜是什么?! 当对象向自身发送消息时。 3.遵循以下图表: 哦! 多么棒的图表! 对?! 保持这种状态直到对您自然。 第一个例子是采用Equatable。 该函数具有返回值,并且不会更改任何状态。 这是一个查询! 它是公共的,可以由另一个想知道两个Wallet是否相等的对象调用。 进来! 传入查询:声明结果。 传入查询非常简单。 您有一个预期的结果,然后调用该函数并断言它(如果它返回了预期的结果)。 (单词sut代表sut系统。在下面的示例中也将使用它) 第二个例子:在loadView之后,您想确保您的插座正确钩住! 他们在这一点上不应该零。 该函数没有返回值,调用后应设置出口。 因此,它有副作用。 所以,这是一个命令! (副作用是直接公开的,因为出口是sut上的财产 ) 该模块是公共的,可以从外部调用。 […]

重新使用Xcode模拟位置

早在2013年,我写了一篇有关使用Xcode模拟位置的文章。 在2016年,Apple改进了这些工具,以使模拟位置变得更加容易且不易出错。 让我们看一下Apple对开发工具的增强功能以​​及已解决的问题。 GPX文件和Xcode Xcode使用标准化的文件类型来模拟位置。 GPX规范概述了定义路径或地理定位坐标集的许多不同方法。 Xcode仅使用标记,因此,如果找到一个生成基于或的GPX文件的工具,Xcode将无法正确模拟您的位置。 Xcode将像通过一条路线一样通过一系列标签运行,但是它没有提供任何机制来控制航路点列表中每个条目的速度或时间量。 可以在以下示例中找到GPX文件的示例,该文件模拟WWDC与会者朝库比蒂诺的朝圣(我希望他们会游泳): Moscone Cupertino 采购GPX文件 除非您希望将多个航路点串在一起以模拟用户驾驶,否则Xcode可以为您提供模拟位置的大部分方法。 在“ 新建文件”表中,“资源”部分下现在提供了创建GPX文件的选项。 生成的默认GPX文件自动设置为Cupertino。 将lat和lon属性修改为新的静态位置,即可开始使用。 配置项目 配置项目以模拟位置非常简单。 将GPX文件添加到项目后,可以在项目的方案编辑器或Xcode的调试区域中启用位置模拟。 通过导航到菜单栏中的产品->方案->编辑方案,打开项目的方案编辑器。 在方案的“运行”操作中,选择“选项”选项卡。 您应该看到类似以下内容: 另一个选择是在应用程序运行时对其进行调整。 在应用程序运行时,通过导航至菜单栏中的“视图”->“调试区域”->“显示调试区域”,打开“调试区域”(如果尚未打开)。 在“调试跳转栏”中,您将在“调试视图层次结构”按钮旁边看到导航图标。 单击它会显示类似于以下的视图: 最后一种模拟位置的方法仅适用于iOS Simulator。 导航至iOS Simulator菜单栏中的Debug-> Location会弹出一些选项,用于模拟静态位置(Apple或Custom Location)或模拟用户骑自行车,跑步或驾驶。 通过“自定义位置”选项,您可以输入静态的纬度和经度: 移动设备的模拟都在Cupertino区域中,因此,如果您需要模拟其他内容,则可以对多个标签进行拍摄。 最后说明 Apple修复的最大错误是模拟设备上的位置。 仅在调试器运行时模拟位置。 停止调试器会将位置服务的控制权返回给iOS设备上的相应无线电和传感器。

Xcode 7离线视图

当使用情节提要板时,Xcode 7在Interface Builder中引入了许多改进。 情节提要参考 ,改进的Unwind Segues和Segue子类化是有用的工具,将有助于使用情节提要构建和维护复杂的应用程序。 有关这些主题的所有详细信息,可以在WWDC 2015的“故事板的新增功能”部分中找到。 在此会话中强调的一项重要的小功能是能够在任何视图控制器的场景基座中添加“脱机视图”。 如果您需要呈现一个仅在其容器视图控制器显示后才显示的复杂视图,那么您很可能使用了以下两种方法之一: 在单独的xib文件中定义视图并加载它,如下所示: 让myView = NSBundle.mainBundle()。loadNibNamed(“ MyViewNib”,所有者:self,选项:nil).first! 如! UIView self.view.addSubview(myView) 将视图定义为容器视图控制器层次结构的一部分,可能使用alpha = 0或在主视图范围之外,然后响应某些事件而显示视图。 使用单独的xib文件方法,我们必须使用上面的代码以编程方式加载视图。 如果需要将IBAction和IBOutlet直接链接到视图控制器,则可以通过将视图控制器类指定为xib文件的文件所有者来实现。 尽管这可行,但它需要几个配置步骤,如果我们可以在其视图控制器旁边看到该视图,并且能够直接链接IBAction和IBOutlet,那就更好了。 所有这些都可以通过将视图直接添加到IB中的视图控制器的层次结构中来完成,但是最终我们可以将多个视图彼此并排堆叠,并且在视觉上由于它们彼此重叠而变得难以使用。 离线视图通过将所有内容保留在同一画布中,同时清楚地显示视图控制器及其离线视图,从而大大提高了故事板的清晰度: 要将离线视图添加到视图控制器,只需将UIView(或子类)拖到视图控制器场景停靠区中,它将显示在其上方。 同样,可以根据需要添加多个脱机视图并将其链接到视图控制器。 新添加的视图可以通过CTRL +拖动到View Controller的源文件中,作为IBOutlet链接: 显示视图 如果编译并运行该应用程序,即使调试器显示已设置了相应的IBOutlet,也将看到该视图不可见。 这是因为离线视图不会自动添加到视图层次结构中。 为了显示视图,我们需要自己添加它(例如,在@IBAction方法内部): self.view.addSubview(offlineView) 如果再次构建并运行,我们将看到该视图出现在主视图的左上角,并且其大小与在“界面”构建器中指定的宽度和高度匹配。 查看尺寸 以上所有都是很棒的-但是如果我们希望离线视图成为与其超级视图范围相匹配的叠加层,该怎么办? 从Xcode 7.0 beta 3开始,无法告诉IB添加后,脱机视图应扩展到容器视图,因此我们需要以编程方式进行此操作。 幸运的是,我们的朋友自动版式可以为您提供帮助。 我们可以编写一个简单的UIView扩展类,以将所有视图锚点约束到其超级视图边缘。 有关如何完成的信息,请参见本要点。 有了这个扩展,我们的视图可以像这样锚定到超级视图的边缘: self.view.addSubview(offlineView)//这是我们的@IBOutlet offlineView.anchorAllEdgesToSuperview()// UIView扩展方法 警惕的读者会注意到,以编程方式添加约束时,translatesAutoresizingMaskIntoConstraints设置为false。 WWDC 2015的第2部分“自动布局的奥秘”部分对此做了很好的解释。 结论 脱机视图是Interface […]

逐步指南以安装XCODE进行IOS开发

在本教程中,您将学习如何在MacBook中安装Xcode。 来源:iosDevelopers.org->在此处阅读原始内容 什么是XCODE? Xcode是macOS的集成开发环境,其中包含Apple开发的一套软件开发工具,用于为macOS,iOS,watchOS和tvOS开发软件。 这是开发Apple应用程序所需的唯一软件。 在本完整的iOS开发课程中,您将仅使用此软件。 XCODE是您的武器。 XCode不仅支持Swift,还支持其他编程语言,例如C,C ++,Objective-C,Objective-C ++,Java,AppleScript,Python,Ruby,ResEdit等。 XCODE的费用是多少? 作为Apple开发人员,您不会经常听到这个词,但是Xcode是免费的。 因此,现在您无需花一分钱就可以继续学习。 但是,是的,在学习了基础知识之后,如果您想将应用程序上载到appstore,则需要一个开发者帐户,该帐户的费用为$ 99。 我们将在稍后讨论。 现在,您可以继续使用它。 如何安装XCODE? 您需要按照以下步骤在MAC中安装Xcode:- 检查您的MAC版本。转到屏幕左上方的Apple图标,然后单击Cick-> About this MAC。 现在,您可以看到您的MAC版本。 Xcode 8的最低系统要求为OS X 10.11.5或更高版本(El Capitan),或者理想情况下,您应该运行macOS Sierra(10.12)。 如果您仍在运行早期的操作系统,则需要立即更新操作系统。 2.在您的MAC上打开Appstore。 3.搜索XCODE。 4.单击Xco​​de下方的GET按钮,然后等待其安装。 大约大小为4.8GB,因此如果您仍在使用2G,则可能需要一些时间(当然不是我) 5.安装完成后,单击应用程序中的XCODE图标并启动它。 6.轰! 您已准备好摇滚。 现在,您已经在MAC上成功安装了Xcode,并且所有设置均可用于启动Swift。 因此,让我们进入下一章。 到时候那里见 注意:我们在第1章中讨论了Swift的一些基础知识。如果您错过了该章,请在这里阅读:单击此处获得第1章。 如果您喜欢我的教程,并且想学习iOS和Swift,请访问我的博客www.iosdevelopers.org 现在,Namaste! 🙂

Swift — 4 —核心数据—第6部分,将NSFetchResultController与UITableView一起使用

如果您想进行完整的iOS培训,可以通过以下详细信息与我联系,我会使用目标C或Swift提供实时iOS应用培训 skype:alok.upadhyay32 邮件:meiosdose@gmail.com 应用程式:+ 91–7838552946 您好,希望您一切都好。 在这一部分中,我们将讨论NSFetchResultController( NSFRC )。 我建议您也阅读之前有关核心数据的教程: 基本 简单的应用程序 核心数据单例 使用核心数据进行单元测试 核心数据迁移 NSFetchResultController 当需要获取 , 插入 , 更新和删除核心数据并且需要更新用户界面(如UITableView和UICollectionView)时,可以使用NSFetchResultController。 每次在托管对象上下文中对托管对象模型执行插入,更新或删除操作时, NSFRC都会提供委托回调 。 NSFRC提供了performFetch()方法,该方法返回NSManagedObject模型的数组。 这个NSManagedObject模型数组与UITableViewDelegate和UITableViewDataSource方法作为提要数组一起很好地工作。 NSFRC仅适用于核心数据。 请从这里下载启动项目 请输入☕和开始代码– FetchResultController的基本初始化包含以下步骤: NSManagedObjectContext —一个管理对象上下文,NSManagedObjectContext NSFetchRequest —提取请求,其中包含有关要从核心数据存储中提取哪个实体的信息。 NSSortDescriptor —用于按升序或降序排列结果的排序描述符。 在表视图部分中显示的可选部分名称 。 缓存名称 ,如果您有一个只读数据集,则NSFetchResultController会在第一时间从存储中读取/读取数据。 下一次提取将使用缓存自动获取数据。 显然是一个NSFetchedResultsController类。 一个负责获取诸如插入,更新,删除之类的核心数据操作的回调的委托 。 初始化 请牢记所有这些要点,以便打开入门项目并在CoreDataManager类中的代码下面复制粘贴: 懒惰的var fetchedResultsController:NSFetchedResultsController = { //初始化提取请求 让appDelegate = UIApplication.shared.delegate为! AppDelegate […]

A / B测试工具:如何集成Kii

我最近开发了一个iOS应用程序,该应用程序比较了两个HTTP库(NSURLSession和Alamofire),并决定使用A / B测试工具来收集性能更好的信息。 在这里探索时,我定义了我的研究参数(它们易于使用且易于收集支持信息),进行了一些研究以查看哪些工具更适合我的目标,并最终得到了我愿意测试的三个平台: Firebase和Kii 。 据我所知,你们中的许多人经常不知所措,因此我决定分享在将其SDK与移动应用程序集成过程中遇到的所有困难; 从我的角度来看,这些工具具有所有好处。 这是我对Kii的经验! Kii(Kii Corporation)是一家提供移动后端即服务(MBaaS)的跨国公司。 Kii Cloud服务允许移动应用程序开发人员在不编写服务器软件的情况下向其应用程序添加云服务。 我在研究过程中发现了这个问题,感到很惊讶。 我迅速了解到,使用Kii可以更轻松地访问最常见的A / B测试工具。 尽管大多数时候我不得不放弃太多信息才能开始使用平台仪表板,但是使用Kii创建帐户非常简单明了。 这样做之后,我立即可以访问仪表板。 然后,我可以通过三个简单的步骤创建一个新的体验或应用程序,正如他们所说的那样。 我只需要命名它,选择一个服务器位置(以确定观众将在哪里使用该应用程序,在我看来是不相关的)和一个平台(在我的情况下是一个iOS应用程序)。 此过程还将创建要由我的iOS应用程序中的SDK使用的密钥。 下一步基本上是创建一个新测试,并提供所有信息,我们要在该应用程序上进行测试。 Kii Cloud仪表板可以创建一个新的A / B测试,以添加多个转换,还可以为每个变化选择百分比分布。 Kii团队为多个移动平台提供了多种编程指南,以帮助想要使用其工具的任何人。 由于我的应用程序是基于Swift的应用程序,因此链接SDK非常容易。 我只需要通过添加Kii Cloud框架来准备Podfile,然后再次运行pod install命令。 SDK的用法与之前的用法非常相似:只需导入并使用它即可。 下一步是在您的应用程序中使用实验。 由于我之前已定义它,因此您只需要从Kii Cloud中检索它即可: 现在已经检索了实验,我们可以获取所选的变化和变量值(基于实验定义)。 如前所述,我尝试并集成了三种不同的工具。 这是我对这三个方面的概述,这是有关如何集成Firebase的教程,这是集成Optimizely所需的一切。