如何在Swift中运用Text Kit框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Swift中运用Text Kit框架相关的知识,希望对你有一定的参考价值。

参考技术A 比如说,你们也许希望我们这个应用中还有以下这些自动的功能:被波浪号(~)括起来的文本会显示艺术字体。被下划线(_)括起来的文本会显示斜体。被破折号(-)括起来的文本会在其上划一道横线。所有大写字体会显示红色。如何用TextKit实现上述这些功能就是这篇文章将要向同学们介绍的内容。在学习这些之前,大家需要先理解在TextKit中,文本的存储系统是如何工作的。下面的图展示了TextKit中对文本进行存储、渲染、显现的基本流程:在开发过程中,如果你创建了UITextView、UILabel或UITextField,那么同时Apple会在幕后自动创建上图中的这些类。你可以使用这些类默认实现的行为,也可以自己实现这些类,从而达到你想要的一些对文本控制的行为。让我们来看看这些类的作用:NSTextStorage的功能是存储文本,并通过字符串属性渲染文本。当文本内容发生任何变化的时候,它会告知布局管理器(LayoutManager)。你们也许脑海中已经有了一点想法,那就是实现一个NSTextStorage的子类,以便实现当文本更新时动态改变文本属性的功能,Bingo!想法基本正确(在后文中你将会看到它的运用)。NSLayoutManager的功能是从NSTextStorage中获取文本并在屏幕上渲染文本。它将作为你应用中的布局引擎。NSTextContainer的功能是在屏幕上描绘一个几何图形区域,要显示的文本就是在这个区域内进行渲染的。每个TextContainer一般都和一和UITextView相关联。你可以实现一个NSTextContainer的子类,描绘一个复杂的几何图形,让文本在其中进行渲染。如果想要在我们的应用中实现动态文本格式的功能,那么就需要实现一个NSTextStorage的子类,然后根据用户键入的字符动态的设置文本格式属性

用Swift语言和Sprite Kit复制微信飞机大战游戏

先上GitHub链接:

https://github.com/songrotek/PlaneWar.git

技术分享


接下来略微解说一下!

这个程序还有点Bug,见谅!


1 说明

游戏採用了Sprite kit最新的Per pixel for physic 技术。就是直接使用texture纹理作为sprite的physics body 。

游戏的texture.atlas从别的打飞机项目中拷之并辛苦地分解了。

游戏编写借鉴了网上的objc代码!


2 游戏编写过程

加入背景-》

加入控制的飞机-》

加入发子弹-》

加入敌机-》

检測contact接触-》

加入分数-》

加入游戏控制暂停。继续。又一次開始


3 须要注意的问题

1)SKScene 

GameScene加载时默认的frame大小 是1024*768,这是因为GameScene.sks的设置决定的。

但对于打飞机这款仅仅要竖屏就能玩的游戏来说,没有这个必要,所以在GameViewController里初始化时设置了GameScene的大小

scene.size = view.frame.size

当然也能够在Sprite kit editor中直接改

2)per pixel的问题

因为physics body是texture的形状并且是像素级别。所以有锯齿,导致的问题就是contact接触检測时出现一次接触调用n次didBeginContact:函数

解决的方法就是把图用photoshop打开编辑。把边修得平一点。


4 小结

总体上来说。用Swift和ObjC本质是一样的。该怎么编写还是得怎么编写,但代码确实是简洁了不少,能够节省非常多时间。所以建议换到Swift!














以上是关于如何在Swift中运用Text Kit框架的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sprite kit swift 中制作弹出菜单? [关闭]

Sprite Kit 如何更新按钮上的图像?

如何从 Swift 中的 Health Kit Sdk 中获取卡路里和心率?

如何通过 Sprite Kit 中的 CGPoints 数组制作动画 - Swift

如何使用 Swift 2(Xcode 7)在我的 Sprite Kit 游戏中为背景音乐设置静音按钮?

如何使用 iOS7 Text Kit 在附件周围环绕文本?