相关疑难解决方法(0)

如何在Xcode 6或更高版本中创建类别?

我想UIColor在我的应用程序中使用Xcode 6 创建一个类别.但问题是在Xcode 6中没有Objective-C类别文件模板.

有没有在Xcode 6中创建类别的选项?

objective-c categories ios xcode6

316
推荐指数
6
解决办法
8万
查看次数

类扩展与类类别

类扩展@interface Class () 功能更强大,可以将变量注入类中.类别@interface Class (Category)不能.

还有什么其他差异,何时应该在类扩展中使用类别?

objective-c objective-c-category class-extensions

81
推荐指数
3
解决办法
6万
查看次数

Swift扩展示例

我原本想知道如何制作这样的东西

UIColor.myCustomGreen
Run Code Online (Sandbox Code Playgroud)

这样我就可以定义自己的颜色并在整个应用程序中使用它们.

之前我曾经研究过扩展,我认为我可以用它们来解决我的问题,但我不记得究竟如何设置扩展.在撰写本文时,在Google上搜索"Swift扩展"会导致文档,几个长篇教程以及一个相当无用的Stack Overflow 问题.

所以答案就在那里,但需要深入研究文档和教程.我决定写这个问题和以下答案,为Stack Overflow添加一些更好的搜索关键字,并快速回顾一下如何设置扩展.

具体来说我想知道:

  • 扩展位于何处(文件和命名约定)?
  • 什么是扩展语法?
  • 有几个简单的常用例子?

extension-methods swift

77
推荐指数
3
解决办法
7万
查看次数

在Swift中使用Unicode代码点

如果您对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 StringCharacter.关于它们有很多方便的东西,但是因为在我的特殊情况下我只使用UTF-16代码单元,我想知道我是否应该使用旧的NSString而不是Swift的String.我意识到我可以String.utf16 …

string unicode ios swift mongolian-vertical-script

51
推荐指数
1
解决办法
4万
查看次数

swift扩展中的类函数(类别)

是否可以在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中的等价物是什么?

ios swift

14
推荐指数
2
解决办法
2万
查看次数

自定义字体显示在IB中,但不在模拟器中显示

我已经设置了a UITextView和a UILabel来使用自定义字体.(它是一个垂直镜像的蒙古语字体,但我还包括英文文本,以便您可以看到效果.)单词显示在Interface Builder中,但在模拟器中,大多数字符UITextView只是空框.奇怪的是,在UILabel模拟器中正确显示的字符中.

如何将它们显示在UITextView同样的位置?

在此输入图像描述

笔记:

  • 我使用的是Xcode版本6.3.2.从这个SO Q&A我知道自定义字体应该与IB中的Xcode 6一起使用.
  • 我已将我的字体文件添加到项目中,并从自定义字体列表中为其选择UITextViewUILabel.
  • 我在我的项目中添加了"应用程序提供的字体"键Info.plist,并将自定义字体添加到其中. 在此输入图像描述
  • 这个问题非常相似(但不同,因为它没有提及UITextViewUILabel问题).在撰写本文时,该问题的OP并未表明最高投票答案是否有帮助.我在那个答案中运行了代码,以确认我的字体是否真的在捆绑中.我得到了以下结果,它确认它在捆绑中,因此仍然无法解决我的问题.

    Family : ChimeeWhiteMirrored
        Font : ChimeeWhiteMirrored
    
    Run Code Online (Sandbox Code Playgroud)

有没有人看到我的错误或有任何其他想法?

更新

收到@ darkheartfelt的downvote并评论下面的答案后,我重新创建了我原来的问题,想想也许我错过了什么.虽然在iOS 9中字体在模拟器中的显示方式有所不同,但基本问题仍然存在:它在IB中看起来不错但在模拟器中看起来不行.

在此输入图像描述

问题可以重现如下(使用Xcode 7.1.1):

  1. 启动一个新的单一视图项目.
  2. 该字体添加到项目中(可下载这里从相关github上的项目)
  3. 在Info.plist文件中添加"由应用程序提供的字体",字体名称为"ChimeeWhiteMirrored.ttf".
  4. 确认目标的"复制包资源"包含ChimeeWhiteMirrored.ttf.
  5. 添加UITextView到故事板.
  6. 在IB属性检查器中粘贴以下文本: 1-10: ??? ????? ???? ???? ??? ??????? ?????? ????? ???? ??? one two three four five six seven …

xcode fonts interface-builder ios mongolian-vertical-script

10
推荐指数
1
解决办法
4539
查看次数