使用UICollectionView,第二部分

甜! 现在,它正在精确地布局我们想要的。 不过,这只是第一步,虽然它是对我们逻辑的可靠验证,但我们绝对没有完成。 接下来,让我们尝试重新排序以进行工作。 我们已经实现了手势识别器,所以让我们开始吧。 好吧,我们学到了两件事。 第一,问题不在于使用过时的布局数据。 第二,我们将在拖动单元格的两秒钟内重新构建整个集合视图布局大约一百万(好,像50)次。 我们可以从中学到什么? 如果您考虑一下,它实际上是完全有意义的。 在释放单元之前,不会通知我们数据源单元已移动,但是我们的布局仍将为周围的单元设置动画。 我们的布局查询委托给定索引路径处的单元格大小,并且该集合是静态的,直到我们删除该单元格为止。 换句话说,如果我们拖拽第五个项目,那么我们的代表将报告第五个项目的大小相同,直到我们放开该单元格为止,尽管集合会在各个单元格之间移动。 如果当我们开始重新排序时,我们节省了所有计算得出的大小,然后在移动单元格时依靠这些大小,该怎么办? 我们可以使用两种方法来完成此操作,但在进行此操作之前,让我们先讨论一下无效上下文。 无效上下文 并非所有失效都是一样的。 就是说,由于种种原因,我们的布局可能会失效,根据我们为什么要使布局失效,我们可能希望做出不同的反应。 UIKit在UICollectionViewLayoutInvalidationContext中捆绑了有关为什么我们在给定时刻失效的信息,我建议在那儿翻阅文档,以查看您可以从中寻求的一切。 它非常强大,在线上似乎不太了解。 当我们拖动单元格时,我们的布局恰巧无效。 每次移动都会触发无效,这解释了为什么尽管只将单元格向左拖动一个项目,却看到了这么多的原因。 我们具体得到的无效上下文是这个非常冗长的方法,它为我们提供了一些附加信息。 当我们重写该方法时,我们期望将上下文传回。 不过,我们确实只想重写它以执行一些与布局有关的额外逻辑,因此,我们将仅返回默认的流程布局实现。 我们还将添加一个新数组来缓存我们的大小,并在prepareLayout中使用它。 请注意,字典将在此处提供更简洁的代码,但是使用数组可以使元素移动得非常非常简单,因为一切都会相应变化。 每当我们的布局在上下文的invalidateDataSourceCounts属性设置为true时无效,或者由于范围更改而无效时,缓存将被清除。 这些新方法是什么样的? https://gist.github.com/Wailord/93cba52f6549cec72346377c4fe13cf9 我们在那里有一个日志,让我们在清除大小缓存时知道。 每次记录日志时,除非绝对需要,否则我们都应该担心,因为随着视图的发展,调整单元格大小的“自动布局”部分将很快成为最昂贵的部分。 让我们看一下它与移动单元格时的比较。 我们能否做得比50次重新计算更好? 大! 我们根本不需要重新计算,这正是我们所期望的。 从概念上讲,没有理由重新计算单元格,因此我们的实现不需要它是很合适的。 旋转呢? 大! 只需很少的代码,我们已经完成了很多我们想做的事情。 我们的单元正在调整大小,我们可以重新排序并保持大小。 但是,请不要忘记,人们可以对我们的集合执行其他多项操作:插入,更新和删除单元格。 如果我们现在尝试插入怎么办? 尝试插入时发生的崩溃是什么? 我们被告知我们传递了一个nil无效上下文(尽管我们自己没有直接传递该上下文)。 我实际上不确定它的来源是什么-UIKit传递给我们的上下文不是可选的,但是当我们获得它时它为nil(或未初始化)。 现在,我们只处理该调用,并防止我们的超类的实现在nil变为零时进行。 让我们放在一起: 整齐! 它的插入和删除都很漂亮。 我们已经掌握了基础知识; 现在,让我们来一点创意。 动画插入,删除和更新 集合视图(和表格视图)更新动画是我认为iOS开发人员认为理所当然的事情。 它们只是一种“工作”,因此我们无需考虑它们,我们也不需要。 […]

夏日4-程序化UINavigationBar

今天,我没有太多时间来处理我的应用程序,但确实做了一些UI改进。 我想使我的应用看起来与Spotify应用非常相似,以便我的用户能够获得无缝的体验。 我使用颜色选择器在Spotify应用中获取颜色的确切十六进制颜色,并将其应用于我的应用。 我学习了如何通过以下StackOverflow帖子更改导航栏标题字体的颜色: iOS 8中的NavigationBar栏,色调和标题文字颜色 状态栏中的背景文本仍为黑色。 如何将颜色更改为白色? // io8,swift,Xcode 6.0.1… stackoverflow.com 以下是使导航栏标题字体颜色为白色的代码行: UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0) UINavigationBar.appearance().tintColor = UIColor.white UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white] 我还修复了使应用程序崩溃的索引超出范围错误,因为显然某些专辑没有专辑封面,因此我对此进行了检查。 这是应用程序的当前进度: 明天,我计划学习如何进行程序化StackView,以使布局看起来更好,并可能开始实现CoreData。 Github链接: harrysummers /无限图书馆 通过在GitHub上创建一个帐户为Infinite-Library开发做出贡献。 github.com

如何建立群组?

发布活动,一键邀请所有常客,收取费用,并将活动推广给其他寻找活动的当地人 任何大小的体育或健身团体,包括接力足球,排球,篮球,攀爬,瑜伽,远足,跑步等,都可以在OpenSports网站上免费创建一个团体,以更好地发布游戏,一键邀请所有常客,邀请来自更广泛的OpenSports玩家社区的更多玩家,看看谁来了,与大家交流,并收集金钱! 在学习如何创建自己的团队之前,请查看美国最大的足球俱乐部之一,该俱乐部使用OpenSports发布付费的皮卡游戏并寻找所属联赛的替补球员:Chicago Fire Recreational Soccer Club。 如何建立群组 当您进入“组”选项卡时,可以在您 的 OpenSports网站 上创建组 ,并通过播放器配置文件在移动应用中 创建 组。 如果您将组公开 ,则任何人都可以加入,并且组中发布的公共游戏将在OpenSports游戏页面上可见。 如果组是私有的 (仅邀请),组管理员必须邀请玩家加入组,并且游戏将不会显示在OpenSports游戏页面上(除非它们是公共游戏)。 私人组 仅受 邀请,非成员不可见。 如果您创建了一个网上论坛,则您将自动成为该网上论坛的管理员,并且一旦网上论坛中还有其他成员,便可以分配其他管理角色。 下一步 填写有关组的基本信息后,您可以创建第一个活动,然后向朋友/队友发送邀请到您的组。 他们甚至不必下载应用程序即可加入您的论坛-他们仍然会通过电子邮件收到所有相关的通知!

流畅响应的VideoPlayer Feed

ASVideoNode 纹理 texturegroup.org 在ASVideoNode上下载Feed。 ASVideoNode应该应该自动播放属性。 이걸是(True)로해주면didEnterVisibleState시켜주고로播放시켜주고didExitVisibleState에서暂停해줍니다。 [国家에기여] 。기까진제문보입니다。 设置资产或assetURL的设置值。 Main로主线程断言이걸려있기때문입니다。 。다면다음과이음과가완성됩니다。 한쪽당로빨간리는4억7가가지고다고다。 播放播放操作可见状态播放GCD播放器2.0秒。 적용하였고를를북과북과다적용하였고적용하였고적용하였고적용하였고적용하였고적용하였고적용하였고하하하하하하하하하하하하하하。 면획자전부Run Run NSRunLoop같이전부리십시오。 고리고退出可见해당Cell해당播放,加载操作을가차없이取消시킵니다。 시리고다시输入可见的시에는다시块操作만들어서PlayOperationQueue에다。 지나간지나간대로〜 。이정도면스가상당히다할다있겠습니다。 안녕〜

新的官方更新Crypviser Secure Messenger:巨大的iOS更新将于2018年9月15日发布

新闻稿2018年10月9日, Crypviser GmbH,德国杜塞尔多夫 新的官方更新 Crypviser Secure Messenger:巨大的iOS更新将于2018年9月15日发布 我们很高兴地说,用于安全通信的Crypviser iOS应用新版本将于2018年9月15日在Apple App Store上发布。 我们的团队一直在努力进行Crypviser应用程序的大量更新和改进的新版本。 在此版本中,我们着重于可用性和更友好的用户体验。 所做的更改影响了应用程序的所有关键功能。 重新设计的帐户注册向导可简化流程,并使任何用户(无论其经验如何)都更容易。 通过新的“联系人管理器”功能,区块链中新的联系人搜索功能更加容易。 使用联系人管理器,您可以方便地管理所有传出和传入的请求,只需单击一下即可接受或拒绝邀请。 在列表中添加联系人后,您可以立即开始聊天,通话或视频通话,发送语音消息并共享媒体。 改进还触及了许多屏幕上的UI / UX,例如联系人列表,个人资料视图,聊天窗口等。 在新版本中,您还可以邀请其他人单击几下使用Crypviser,还可以选择自定义聊天背景并设置首选音调。 聊天窗口经过了重新设计,现在看起来更加令人兴奋。 新的功能! 现已提供加密货币钱包,交换和CVPAY 此版本中包括集成的Crypviser钱包,Exchange和CVPay! 您将能够安全地将CVT令牌存储在Crypviser应用程序中,交换到CVCOIN(CVN)并通过CVPay发送令牌,只需单击一下即可! 帐户备份导入/导出 此版本具有令人兴奋的功能,使您可以通过Airdrop(MAC)或iCloud将所有加密的数据备份到桌面上。 备份数据完全受密码保护并受其保护。 通过进行Crypviser帐户备份,在重新安装应用程序或更改设备后恢复帐户的情况下,您不会丢失任何数据或联系人。 该新版本是计划于2018年9月投入商业运营之前的关键一步。 将来的版本中将提供更多激动人心的功能和更新! 保持安全。 留在Crypviser。

夏季第16天-程序化UICollectionView和活动指示器

今天,我完成了我的SettingsViewController。 这需要创建一个程序化的水平UICollectionViewController以便显示我的教程gif。 以编程方式进行操作有点棘手,因为我在UIViewController而不是UICollectionViewController内使用UICollectionView。 这是通过程序制作集合视图的过程: 使用UICollectionViewFlowLayout实例化UICollectionView: 我接下来要做的是下载用户库时的活动视图和进度标签。 我决定去图书馆看我的活动。 我有一种在应用程序中使用尽可能少的Pod的理念,但是当我这样做时,我的标准是: Pod很简单,并且一件事做得很好。 它得到了社区的广泛使用和支持(包括明星和明星) 它稳定且已针对新的Swift版本进行了更新(主要发行版本之间没有重大更新) 坦白说,我也使用Pods来花费我很长的时间来实现自己的解决方案(例如,图像缓存和加载或gif加载)。 NVActivityIndi​​catorView是一种非常流行的ActivityView Pod: ninjaprox / NVActivityIndi​​catorView NVActivityIndi​​catorView –很棒的加载动画的集合github.com 该库似乎符合我的所有条件,并且第一个活动视图与Spotify使用的视图非常相似。 我还制作了一个进度标签,显示完成百分比。 最终的加载屏幕如下所示: Github链接: harrysummers /无限图书馆 通过在GitHub上创建一个帐户为Infinite-Library开发做出贡献。 github.com

iOS:尽可能保持与外部BLE设备的连接

在arkulpa,我们为客户构建了一个应用程序-在初始设置后-必须尽可能保持与外部BLE设备的连接,而无需用户做任何事情。 BLE设备是一种家庭配件,其目标是,如果用户离开房屋并可能在几天或几周后才返回,则应自动重新建立连接。 有关iOS / Swift / BLE的详细介绍,请转到此非常棒的博客文章(三部分)。 本文可以看作是扩展,重点是使蓝牙连接保持活动状态,并包括Apple开发人员技术支持提供的一些响应。 学习#1 如果您想在后台运行应用程序时找到BLE设备,请不要在此处使用所有nil : centralManager.scanForPeripherals(withServices:无,选项:无) pheral.discoverServices(无) pheral.discoverCharacteristics(nil,用于:服务) 根据Apple文档: 指定了bluetooth-central背景模式的应用程序可以在后台扫描。 也就是说,它们必须通过在serviceUUIDs参数中指定它们来显式扫描一个或多个服务。 在CBCentralManager扫描时,将忽略CBCentralManager扫描选项。 因此,我们要做的是在设置过程中使用nil选项进行扫描(= app位于前台),然后保存所有UUIDs (例如,在UserDefaults )。 当我们需要在应用程序处于后台运行时进行扫描时,我们可以使用保存的UUID。 学习#2 我们需要一种方法来使应用程序在连接断开时自动在后台自动重新连接,大多数情况下,这是因为iPhone和BLE之间的距离太大。 事实证明,这很简单(尽管您必须知道):只需在func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)再次调用connect -method func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)因为… […]连接请求不会超时,用户返回家园时,iOS设备将重新连接。 问题是:只有在以下任何一种情况下,它才起作用: 设备重启 蓝牙无线电正在关闭然后重新打开 飞行模式开启然后关闭 如果由于某种原因BLE堆栈崩溃 而且,最重要的是,用户强制退出了您的应用 (引自Apple Developer技术支持的邮件)。 尽管“重新连接”解决方案对我来说总是适用于2.)和3.),但是仍然存在无法重新建立连接的其他用例。 这导致我们…… […]

如何创建CocoaPod(最佳方法)。

与直接创建可可豆相比,创建项目然后将其转换为可可豆更容易。 像往常一样先创建您的项目。 打开Xcode ,然后按照提示移动命令“ n” 。 您可以像以往一样安装Pod(依赖项)。 cd到YourProject 荚初始化 打开-Xcode Podfile 粘贴吊舱的安装钩 # Pods for YourProjectName pod ‘YourPodsDependency’, :git=>’urlForYourDependencyOnGitHub.git’ #用于Ruby中的注释。 podfile是用Ruby编写的。 在终端: 吊舱安装 您可以以相同的方式使用字体。 添加一个名为Resources的组和一个名为Fonts的子组。 然后将字体拖到子文件夹中。 确保选中项目作为目标并根据需要复制项目。 复制字体名称并将其粘贴到plist 。 单击您的列表。 然后为Fonts Provided by Application.添加一个密钥Fonts Provided by Application. 测试已经结束,请确保您可以使用它们。 如果plist存在问题,我发现最好动态加载它们: 创建一个名为Classes的文件夹,然后将您要使用的类和其他文件放在其中。 您可以创建一个名为Fonts的文件夹,并将字体放在其中。 您可以创建一个名为images的文件夹,并将其放在其中。 重要说明 :如果您希望使用此值的项目可以访问这些值,则将其public 。 添加一个LICENSE.md 首先,在文件导航器中右键单击您的项目。 然后点击“新文件”。 然后选择MarkDown文件。 重要说明:请确保您将此文件命名为LICENSE.md。 制作许可证并将其粘贴到此文件中。 或者,您可以访问此站点以获得更通用的许可证。 选择一个开源许可证 为开源项目选择许可证的非判断性指导 selectalicense.com […]

在IOS上部署离子应用程序

为您的应用创建所有这三件事,然后下载它们。 不要忘记下载证书和配置文件。 回到ionic应用程序,在文件夹的根目录下运行以下命令 离子科尔多瓦建立iOS 然后去平台> ios 打开.xcworkspace文件,它将以xcode打开项目。 您可以通过选择任何特定设备或连接的设备来播放该应用程序。 现在,让我们学习构建应用程序的存档,以将其部署到Test Flight中,然后在测试后将其移动到存储中。 🙂 选择通用ios设备,然后选择产品>存档 您的档案清单将会显示 点击上传到App Store。 让它自动进行管理,您就完成了…您的应用程序将在iTunes Connect上可用。

使用Xcode Server进行iOS持续集成的利与弊

持续集成aka CI是iOS开发过程中不可或缺的一部分,当在应用程序开发过程中出现问题时,它可以提供早期反馈。 在敏捷应用程序开发中,生产可运行的应用程序不仅在编写良好的代码,而且还建立了可连续交付的基础架构。 持续集成和自动化构建的过程可以帮助实现持续交付。 市场上有各种持续集成工具可供iOS团队使用。 CI服务器解决方案可以是自托管的或云的。 您可以在此处获得有关CI服务器的完整列表以及建议。 在iOS开发中,选择自托管CI服务器时,我们几乎没有挑战性的选择 Xcode服务器 詹金斯 团队城市 如果您正在寻找云解决方案,那么有一些有希望的服务,例如 TravisCI CircleCI BuddyBuild 比特升 温室CI 有多种工具,因此挑战在于如何选择和评估为什么一个要比另一个更好。 Cloud CI服务器易于设置,可以由其他公司进行管理,并且只要配置正确,它们就可以正常工作。 另一件事是在使用云CI解决方案时,我们不需要有人来管理服务器。 但是,在使用基于云的解决方案时,您必须注意各种事项,例如隐私,成本,易用性,可用性和平台支持。 选择自托管vs Cloud CI有其自身的优缺点,您应该考虑最适合您的团队的问题。 对于自托管CI,Xcode Server似乎是简单的选择,因为它由Apple管理并与Xcode深度集成。 在本文中,让我们看看使用Xcode Server进行iOS持续集成的优缺点。 Xcode服务器简介 Xcode Server是Apple开发的一个持续集成平台,用于分析,构建和测试以及存档iOS和macOS应用程序。 iOS开发中最痛苦的部分之一是证书和配置文件配置文件。 当我们想在CI服务器上设置证书和配置文件时,变得更加忙碌。 最新版本的Xcode Server解决了证书和配置文件方面的许多问题。 Xcode Server与Xcode紧密结合,因此设置和使用Xcode Sever进行持续集成变得非常轻松。 苹果在CI的Xcode Server设置上有非常全面的文档,但是我写了简短的教程来设置最新的macOS Server来运行Xcode机器人,该教程也在DZone上发布。 您可以参考这些指南来开始使用Xcode Server。 Xcode Server具有以下功能 免费或廉价解决方案 自托管并与Xcode深度集成 设备测试 无线(OTA)安装 由苹果公司管理和维护 Xcode Server具有所有这些功能,但是有些人为使Xcode Server正常工作付出了很多努力。 让我们看看使用Xcode […]