多种颜色NSString或NSMutableStrings不可能.所以我听说过一些关于iPad SDK 3.2(或3.2左右)NSAttributedString引入的内容,并且可以在iPhone SDK 4.0 beta版的iPhone上获得.
我想要一个有三种颜色的字符串.
我不使用3个单独的NSStrings的原因是因为三个NSAttributedString子串中的每个子串的长度经常变化,所以我更喜欢,不使用任何计算来重新定位3个单独的NSString对象.
如果可以使用NSAttributedString我如何进行以下操作 - (如果不能使用NSAttributed字符串,你会怎么做):

编辑:
请记住,@"first",@"second"并@"third"会在任何时间其他字符串替换.因此,使用硬编码的NSRange值将不起作用.
当放入多行中时,是否可以缩小文本之间的差距UILabel?我们可以设置框架,字体大小和行数.我想减少该标签中两行之间的差距.
我有一个显示NSAttributedString的UITextView.这个字符串包含我想要点击的单词,这样当它们被点击时我会被回叫以便我可以执行一个动作.我意识到UITextView可以检测URL上的点击并回调我的委托,但这些不是URL.
在我看来,iOS7和TextKit的强大功能现在应该可行,但我找不到任何示例,我不知道从哪里开始.
我知道现在可以在字符串中创建自定义属性(虽然我还没有这样做),也许这些对于检测是否有一个神奇的单词被点击是有用的?在任何情况下,我仍然不知道如何拦截该敲击并检测敲击发生在哪个单词上.
请注意,不需要iOS 6兼容性.
在Objective-c中,我们使用NSRange创建范围
NSRange range;
Run Code Online (Sandbox Code Playgroud)
那么如何在Swift中创建范围呢?
我原本想知道如何制作这样的东西
UIColor.myCustomGreen
Run Code Online (Sandbox Code Playgroud)
这样我就可以定义自己的颜色并在整个应用程序中使用它们.
之前我曾经研究过扩展,我认为我可以用它们来解决我的问题,但我不记得究竟如何设置扩展.在撰写本文时,在Google上搜索"Swift扩展"会导致文档,几个长篇教程以及一个相当无用的Stack Overflow 问题.
所以答案就在那里,但需要深入研究文档和教程.我决定写这个问题和以下答案,为Stack Overflow添加一些更好的搜索关键字,并快速回顾一下如何设置扩展.
具体来说我想知道:
其实我爱UILabel.他们很甜蜜.现在我不得不去,UITextView因为UILabel没有垂直对齐文本到顶部.该死的.我真正需要的是文字阴影.UILabel有它.UITextView好像没有它.但我猜那家伙只是使用相同的底层UIKit NSString加法?也许有人已经有解决这个问题的方法?我会覆盖什么?
我使用titleForHeaderInSection来显示UITableView部分的标题.它适用于iOS6 SDK,但iOS7 SDK在所有CAPS中都显示了标题.
我想这是Apple更新的人机界面指南的一部分; 所有示例都显示所有大写的标题.此外,我的iPhone上的设置中的所有部分标题都是全部大写.
但是,我想知道是否有办法解决这个问题.通常情况下,我不介意显示大写,如果这可以提高一致性,但当我需要在节标题中显示人的名字时,它有点尴尬.
任何人都知道如何绕过大写?
我有一个参考NSAttributedString,我想更改属性字符串的文本.
我想我必须创建一个新的NSAttributedString并使用这个新字符串更新引用.但是,当我这样做时,我失去了之前字符串的归属.
NSAttributedString *newString = [[NSAttributedString alloc] initWithString:text];
[self setAttributedText:newString];
Run Code Online (Sandbox Code Playgroud)
我参考了旧的属性字符串self.attributedText.如何保留新字符串中的先前属性?
编辑 - 这已被标记为重复,但正如我在下面所述,我正在寻找一个Swift解决方案.我发现的一切都是用Objective C写的.
我试图将HTML转换为NSAttributedString,但无法确定如何设置字体样式和大小.所有示例都在Objective C中,我不熟悉.如何将字体样式/大小设置为System 15(作为示例)
private func stringFromHtml(string: String) -> NSAttributedString? {
do {
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
if let d = data {
let str = try NSAttributedString(data: d,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
return str
}
} catch {
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
编辑......我尝试了几种方法.我无法让它发挥作用.我现在收到一条错误消息:表达式类型不明确,没有更多上下文.它指向NSAttributedString我尝试了以下内容:
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
if let d = data {
let str = try NSAttributedString(data: d,
attributes: myAttribute,
options: …Run Code Online (Sandbox Code Playgroud) ios ×6
objective-c ×5
swift ×3
iphone ×2
uitextview ×2
fonts ×1
header ×1
ios4 ×1
line-spacing ×1
range ×1
textcolor ×1
textkit ×1
typeface ×1
uilabel ×1
uitableview ×1
xcode ×1