我想UIColor在我的应用程序中使用Xcode 6 创建一个类别.但问题是在Xcode 6中没有Objective-C类别文件模板.
有没有在Xcode 6中创建类别的选项?
类扩展@interface Class () 功能更强大,可以将变量注入类中.类别@interface Class (Category)不能.
还有什么其他差异,何时应该在类扩展中使用类别?
我原本想知道如何制作这样的东西
UIColor.myCustomGreen
Run Code Online (Sandbox Code Playgroud)
这样我就可以定义自己的颜色并在整个应用程序中使用它们.
之前我曾经研究过扩展,我认为我可以用它们来解决我的问题,但我不记得究竟如何设置扩展.在撰写本文时,在Google上搜索"Swift扩展"会导致文档,几个长篇教程以及一个相当无用的Stack Overflow 问题.
所以答案就在那里,但需要深入研究文档和教程.我决定写这个问题和以下答案,为Stack Overflow添加一些更好的搜索关键字,并快速回顾一下如何设置扩展.
具体来说我想知道:
如果您对Mongolian的细节不感兴趣,但只想快速回答有关在Swift中使用和转换Unicode值的问题,请跳到接受答案的第一部分.
我想渲染传统蒙古语的 Unicode文本,以便在iOS应用程序中使用.更好和长期的解决方案是使用AAT智能字体来渲染这个复杂的脚本.(这些字体确实存在,但它们的许可证不允许修改和非个人使用.)但是,由于我从未制作过字体,更不用说AAT字体的所有渲染逻辑了,我只是打算自己进行渲染.斯威夫特现在.也许在以后我可以学习制作智能字体.
在外部我将使用Unicode文本,但在内部(在a中显示UITextView)我将Unicode转换为以哑字体存储的单个字形(用Unicode PUA值编码).所以我的渲染引擎需要将蒙古语Unicode值(范围:U + 1820到U + 1842)转换为存储在PUA中的字形值(范围:U + E360到U + E5CF).无论如何,这是我的计划,因为它是我过去在Java中所做的,但也许我需要改变我的整个思维方式.
下图显示su在蒙古语中使用两种不同形式的字母u(红色)两次写入.(蒙古文是垂直书写的,字母连接像英文草书一样.)

在Unicode中,这两个字符串将表示为
var suForm1: String = "\u{1830}\u{1826}"
var suForm2: String = "\u{1830}\u{1826}\u{180B}"
Run Code Online (Sandbox Code Playgroud)
自由变量选择器(U + 180B)in suForm2被Swift识别(正确)String为与其前面的u(U + 1826)的单位.Swift认为它是一个单一的字符,一个扩展的字形集群.但是,为了自己进行渲染,我需要将u(U + 1826)和FVS1(U + 180B)区分为两个不同的UTF-16代码点.
出于内部显示的目的,我将上述Unicode字符串转换为以下呈现的字形字符串:
suForm1 = "\u{E46F}\u{E3BA}"
suForm2 = "\u{E46F}\u{E3BB}"
Run Code Online (Sandbox Code Playgroud)
我一直在玩Swift String和Character.关于它们有很多方便的东西,但是因为在我的特殊情况下我只使用UTF-16代码单元,我想知道我是否应该使用旧的NSString而不是Swift的String.我意识到我可以String.utf16 …
是否可以在swift中的扩展中定义类函数,就像在Objective-C类中一样,您还可以定义类函数?
objective-c中的示例
@implementation UIColor (Additions)
+ (UIColor)colorWithHexString:(NSString *)hexString
{
// create color from string
// ... some code
return newColor;
}
@end
Run Code Online (Sandbox Code Playgroud)
swift中的等价物是什么?
我已经设置了a UITextView和a UILabel来使用自定义字体.(它是一个垂直镜像的蒙古语字体,但我还包括英文文本,以便您可以看到效果.)单词显示在Interface Builder中,但在模拟器中,大多数字符UITextView只是空框.奇怪的是,在UILabel模拟器中正确显示的字符中.
如何将它们显示在UITextView同样的位置?

UITextView了UILabel.Info.plist,并将自定义字体添加到其中.

这个问题非常相似(但不同,因为它没有提及UITextView和UILabel问题).在撰写本文时,该问题的OP并未表明最高投票答案是否有帮助.我在那个答案中运行了代码,以确认我的字体是否真的在捆绑中.我得到了以下结果,它确认它在捆绑中,因此仍然无法解决我的问题.
Family : ChimeeWhiteMirrored
Font : ChimeeWhiteMirrored
Run Code Online (Sandbox Code Playgroud)有没有人看到我的错误或有任何其他想法?
收到@ darkheartfelt的downvote并评论下面的答案后,我重新创建了我原来的问题,想想也许我错过了什么.虽然在iOS 9中字体在模拟器中的显示方式有所不同,但基本问题仍然存在:它在IB中看起来不错但在模拟器中看起来不行.
问题可以重现如下(使用Xcode 7.1.1):
UITextView到故事板.1-10: ??? ????? ???? ???? ??? ??????? ?????? ????? ???? ??? one two three four five six seven …