Tag: asyncdisplaykit

基于Texture的聊天应用程序

Texture를이용한ChatKit만들었다。 정말기능만 。다른이브러리들도해봤었다。 mukyasa / MMTextureChat MMTextureChat –用于 Whatsapp 和iMessage的 AsyncDisplayKit (Texture)平滑滚动聊天模拟 github.com MessageKit /消息包 MessageKit –开发中:JSQMessagesViewController社区驱动的替代品 github.com nguyenhuy / AsyncMessagesViewController AsyncMessagesViewController –适用于iOS的平滑,响应和灵活的消息UI库。 github.com slackhq / SlackTextViewController SlackTextViewController –带有不断增长的文本输入视图和其他有用消息传递的嵌入式UIViewController子类…… github.com 생각한이있었는데,내가생각한聊天应用程序라이브러리에서가핵심적인능은 追加,追加용이해야한다。 前置스때유이유지되야하고사용자좋아야한이좋아야한다。 消息输入UI를이기가용이해야한다。 Diff算法Diff算法,网络,网络,网络和应用程序。 聊天应用程序능들과기부부가적으로능들기능들이많다。 GTChatKit产品和服务GTGhatKit产品。 용법을먼저먼저 class기子类 类ChatNodeController:GTChatNodeController {…} 请参见GTChatNodeController子类。 그냥리。이같初始化그냥이다。 让viewController = ChatNodeController() 그리고가능한로퍼티자면보자면보간단히 类ChatNodeController:GTChatNodeController { … func foo(){ let collectionView = […]

纹理最佳实践5

MVVM활용한材质纹理应用程序만들기 서론 图1〜4편까로는를를를본적인본적인본적인본적인뤘고뤘고뤘고뤘고뤘고뤘고뤘고뤘고뤘고본적인본적인본적인본적인본적인본적인본적인본적인본적인듭니듭니듭니듭니듭니듭니。 이번에높높매우매우때문에팅을팅을하신하신하신한한한한한듭니듭니듭니듭니듭니듭니듭니듭니듭니。。。。。。。。。。 RxSwift / RxCocoa Link이해(链接) Texture UI发布(AsyncDisplayKit) 型号,视图해이해,기존MVC패턴에패턴에 MVC와MVVM 우선MVVM존에에에존존MVC패턴을말씀드리자면 MVC패턴이Model ?,模型—视图—控制器의로약자리케이션을가지의로역할다。 应用程序应用程序控制器控制器模型数据视图,视图视图菜单视图。 iOS장가장기본적인이며,많이쓰이기도다。 下载,下载iOS代理到Google Play上的应用程序。 왜이,MVVM패턴이탄생하게된?。 죠다똑같은케리케이션인데죠이죠。 MVC在UI的다。。。上케케케케케케케케면면면면뿐더러뿐더러。 MVC模型模型视图控制器控制器控制器控制器控制器控制器控制器控制器控制器지게다。 따라서查看模型것이것이MVVM패턴입니다。 MVVM模型— ViewModel —查看로있습니다。 ViewModel的下载,ViewModel的ViewModel的下载,ViewModel的下载,ViewModel的下载。 ViewModel模型在模型中的使用。 iOS는ViewController때문에기模型— ViewModel View View(ViewController)이되겠습니다。 면따라서어플되케에에에에에에에에에에에에에에같습니다。다 에MVVM이랑MVC했습니다만른다고감사참조하시면다하겠습니 (이번스포지취지는기아니기비교할려는게이니다。) 已下载MVVM,Texture和Github存储库列表。 준비물이필요하겠죠? 。사항은같습니다。 Github存储库API(https://api.github.com/repositories) Xcode Cocoapod(Texture,RxSwift / RxCocoa 4.x이상,AlamoFire) 분들은https://github.com/GeekTree0101/RxMVVM-Texture 위의Github存储库를克隆되겠습니다。 (星级눌려주시면사하겠습니다。ㅎ) 迅速下载Swift4.x。 模特과视图를보자! 우선,개략적으로개략적으알아보도록하겠습니다。 在ViewModel中查看ViewModel,在ModelUp中查看模型,在ModelProvider中获取模型。 Model Provider的模型Model和Array的模型。 View저희가만들를넣었고넣었고。나타냈습니다나타냈습니다 […]

流畅响应的VideoPlayer Feed

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

如何像聊天应用程序一样预先添加ASCellNode

好吧,您知道这些著名的聊天应用程序。 微信和Kakao对话。 这些具有共同的特征。 这些预附加消息的内容偏移量接近于零 。 在此之前,我只是自定义了ASBatchFetching,使预附加的提取可以像基本的附加提取一样工作。 让contentSize:CGSize = scrollView.contentSize 让viewLength = bounds.size.height 让contentLength = contentSize.height //内容较少 如果contentLength <viewLength { 切换scrollDirection { case .down:返回.prepend case .up:返回.append 默认值:return .none} } 让triggerDistance = viewLength * LeadingScreens让剩下的Distance = contentLength — viewLength —偏移量 切换scrollDirection { case .down: 返回remainingDistance <= triggerDistance吗? .append:.none 大小写: 返回偏移量<triggerDistance吗? << — @HERE .prepend:.none 默认: 返回.none } […]

让我们制作一个iOS Google Chrome浏览器拉动以使用Texture刷新

轻松响应的UI框架 纹理 texturegroup.org 首先,您应该使用indicatorNode创建按钮项。 IndicatorNode只是带有某种颜色的圆形视图。 接下来,您必须制作layoutSpec 使用关闭/刷新/加号按钮制作StackLayout 设置关于stackLayout的padding Inset 静态让插入:UIEdgeInsets = .init(顶部:30.0,左侧:0.0,底部:30.0,右侧:0.0) 3.将indicatorNode包装为absoluteLayout。 4.返回带有填充堆栈布局和绝对指示器布局的 WrapperLayoutSpec 接下来,您应该将refresh-node覆盖到tableNode上。 哦! layoutSpecThatFits只是使用layoutSpecBlock的自定义方法 现在,使用scrollView参数制作updatePostion方法。

Texture(AsyncDisplayKit):“这不应该这样做”

曾几何时,有一小组iOS开发人员认为尝试AsyncDisplayKit来完成从A到Z的整个开发项目真是太棒了。为什么不呢。 首先,为什么还要打扰? 好吧,对我们来说,这些是原因: 我们希望尽可能地接近于用代码编写完整的布局。 在代码中布置UI是一件“事情”。 60 fps的自定义CollectionViewLayout听起来令人赏心悦目; 只是缺乏挑战? 好吧,不是真的,但这很有意思。 无论如何-节点,节点,无处不在的节点。 一切都是节点。 节点进入其他节点。 拥有自己的节点。 本文的主要目的只是为了让我们对这个框架有想法,并可能分享一些我们认为很不错的代码行。 喜欢: 使用AsyncKit布置元素会让您感觉很好。 语法流畅,元素链接良好。 归结为对您正在做什么以及与AsyncKit建立良好关系需要做些什么的充分了解。 一个例子:我们有必要建立一个特定的加载屏幕。 动画是另外一回事,但总体布局如下所示: 在执行某些操作时,多维数据集本身会上下动画。 以这种方式布局元素的代码如下所示: 首先接收与移动开发相关的新故事。 —点击该跟随按钮 推特:@ ChiliLabs www.chi.lv

使用AsyncDisplayKit构建时间线视图

使用AsyncDisplayKit为iOS应用程序开发时间线视图时遇到了挑战。 所以这篇文章会告诉你我是怎么做到的 为了制作时间线视图,我为每个具有时间,标题和内容的时间线创建一个ASCellNode,重要的是点。 时间,标题和内容可以通过ASStackLayoutSpec进行管理,点可以使用ASCenterLayoutSpec和ASOverlaySpec进行管理 并连接所有点,我们需要添加垂直线,在这里我使用ASDisplayNode作为它,并通过调用addSubNode方法手动添加它。 使用ASDisplayNode绘制垂直线有点棘手,只需将backgroundColor用作线的颜色,并将width用作度量所需线的粗细。 在这种情况下,我使用2条垂直线,从单元格的顶部到点的顶部,从点的底部到单元格的高度。 完成所有这些代码后,我们将获得如下视图: 是的,这差不多完成了,但是所有单元之间都有一条水平线。 因此,我们需要为tableNode设置eparatorStyle。 完成done 可以从我的github访问本文中使用的所有代码 tarigancana / TimelineWithASDK TimelineWithASDK –使用ASDK创建时间线视图 github.com

纹理+ RxSwift交互式包装

如何为纹理制作RxSwift交互式包装? 基本上,纹理提供了各种基本组件,如下图所示。 特别是,我专注于ASControlNode来制作反应式包装。 因为,基本上, RxCocoa提供了各种交互式包装器,例如UIButton点击包装器,UIGestureRecognizer事件包装器等。 参考:https://github.com/ReactiveX/RxSwift/blob/master/RxCocoa/iOS/UIGestureRecognizer%2BRx.swift https://github.com/ReactiveX/RxSwift/blob/master/RxCocoa/iOS/UIButton%2BRx.swift 因此,如果我专注于ASControlNode,那么我猜想我可以在ASImageNode(UIImageView),ASNetworkImageNode(UIImageView),ASButtonNode等上进行方便的交互式包装。 我提到了UIGestureRecognizer + Rx脚本,并将其重新制作为ASControlNode包装器。 并按以下代码所示进行扩展。 最后,您可以使用像这样的上层代码! 参考: 使用Texture(AsyncDisplayKit)改善Feed性能 못잡네。 。리돌보다발열이심합니다。 겠죠가최적화다는리소? +이앱이안정적이었는데이이모양이+…+와。 15만지고리20%광탈… medium.com GeekTree0101 / GTTexture-RxExtension GTTexture-RxExtension –基于ASControlNode的Texture RxSwift交互式包装 github.com

纹理最佳实践2

纹理最佳实践#2 LayoutSpec 内容元布局和堆栈元素。 消息气球布局(layout진메세메세지내용)을이미지와이같가수가있고 消息气球尾巴:말풍선말풍선리 消息气球内容:말풍선 消息提示框内容。 媒体领域: 消息文本区域:메세지텍스트 Stack기으지가StackLayoutSpec으로布局기본설계가끝이난다。 2. AS Stack LayoutSpec布局子布局中的布局。 이건또이무슨말? 각,각子布局의를정리를다음과다。 媒体布局은比率은이변해야한다。 。로필은위치해야한위치해야한다。 15.0分하향해야한다。 订婚(마진은)마진은5.0pt정도가진다。 이렇게눈으로봤을이정리가것이다。 어떤과항목별과과다다다다다다다다다。 로하나씩풀어보자면 媒体布局은比率은이변해야한다。 :比率AS Ratio LayoutSpec LayoutSpec。 。로필은위치해야한위치해야한다。 : AS Relative LayoutSpec , AS Absolute LayoutSpec layoutPosition相对应。 在AS Inset LayoutSpec插入底部的.infinity로finity다。 in지만사주의.infinity로잡았는데이 레다 일으킵니다。 15.0分하향해야한다。 : AS Inset LayoutSpec .Infinity布局图。 (참고:layoutPosition타입은CGPoint입니다。) 订婚(마진은)마진은5.0pt정도가진다。 :해하셨으면이해하셨으면이거거제는겁니다。 布局布局。 。지다보면수올릴가。다。 […]

气泡,气泡,气泡…

气泡可能意味着愉悦而轻松的沐浴,或者对某人来说只是个不错的杜松子酒。 在Tuenti,当有人说Bubbles时,我们对会话组件进行了重新设计。 该组件对于我们的应用程序非常重要。 我们将所有与其他朋友或其中一些朋友共享的内容放置在此处。 例如,我昨天发送给您的短信,由于找不到您而不得不与您共享的位置或仅仅是我打电话预订餐厅的电话。 为了由用户以容易和愉快的方式消费,必须显示越来越多的内容。 它由我们的出色设计师负责,可以确定没有问题! 他们提出了可以针对各种新内容和现有内容进行扩展的设计,但是工程师始终知道必须在代码中实现的那些工件。 “圆角太多!”,“渲染文字会影响性能……”,“滚动条不会很平滑……” 是的 很多评论,很多投诉,但我们所有人都希望得到最好的方法。 我们在谈论UI,所以让我们看看UIKit。 这是我们基于项目的框架。 从此开始,我们发现了一些严重影响性能的点: 渲染文本很昂贵。 单元格的类型很多,大多数都非常不同,主要是它们的高度。 增加拐角半径可能会使主螺纹过载。 然后,我们问自己: 我们应该在没有XIB / 情节提要的情况下进行绘制吗? 我们不应该使用自动排版并获取每一帧吗? 单元格的高度呢? 由我们计算? UIKit进行了很多更改,但似乎已经得到了很大的改进……恕我直言,UIKit的性能越来越差,我不知道这对某人是否重要。 使用单元格的自动高度,我们可以看到主线程使用率很高,并且该应用程序无法使用。 带有多行的UILabel即使没有电话/ URL检测之类的基本功能,也会影响性能。 似乎我们需要像CoreText这样的低级库。 我们仍然尚未启动该项目,但发现了很多问题…… 我们的项目基于Model-View-Presenter ( MVP )。 M和P已经解决,因此让我们使用“虚拟”视图V和Texture框架进行测试, Texture框架已在我们有趣的HackMeUp中经过PoC测试! 而且还不错🙂 好吧,这是“惊人的”,但是……什么是纹理 ? “纹理是建立在UIKit之上的iOS框架,即使最复杂的用户界面也可以保持平滑和响应。” 噢,但是…… 纹理到底是什么? 基本上, Texture是一个框架,该框架内部使用UIKit来呈现视图的UI,从而优化了后台中的每个计算,这意味着避免使用主线程并失去FPS。 在Texture世界中,每个UI组件都是一个节点。 它们基本上是UI组件的包装。 节点提供了非常相似的接口,因此将其集成是一个优势。 让我们从ASTableNode开始,它将取代我们的UITableView。 我们需要创建ASCellNodes来表示每个内容,而不是UITableViewCell。 ASTableNode可以确定单元节点的高度。 这是否意味着它像带有UITableViewAutomaticDimension的UITableView一样工作 ? 它没有,它做得更好。 此外,它还使用其智能预加载功能来计算背景中的高度。 它适用于三种状态: […]