我试图放弃在我的viewController中使用NSAttributedString,选择在UILabel的属性检查器的“text”字段中使用“Attributed”选项(与'Plain'相对应)。
我选择了我想要归属的单个单词,并更改了它们的字体,这在文本预览窗口和IB本身的场景中得到了正确反映:
但是,模拟器没有反映这些变化,似乎在运行时没有使用为属性指定的字体(当我更改颜色时,这按预期工作)。我已经将字体添加到我的项目和我的plist中无济于事:
我没有找到关于此功能的文档,它可能与IB中的“文本样式”功能类似(现在基本上没用) - 但只是想看看是否有人有运气做类似的事情过去。
非常感谢任何帮助或建议,谢谢。
编辑03/07/15 好吧,我很高兴地报告这个问题最终在Xcode 7中解决(仍处于测试阶段)。所以我们终于可以解决这个问题了。感谢所有试图与我一起解决这个问题的人。
答案 0 :(得分:2)
在Xcode 7.0 beta中:我发现这是有效的。
输出:
或强> 你可以动态地做。
-(void)attributedText{
UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 100, 200, 44)];
NSString *newsTitle = @"Hello";
NSString *sportTtle = @"World";
NSString *title = [NSString stringWithFormat:@"%@ %@", newsTitle,sportTtle];
textView.text = title;
UIColor *color = [UIColor redColor];
UIFont *font = [UIFont fontWithName:@"Arial" size:20.0];
NSDictionary *attrs = @{NSForegroundColorAttributeName : color,NSFontAttributeName:font};
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithAttributedString:textView.attributedText];
[attrStr addAttributes:attrs range:[textView.text rangeOfString:sportTtle]];
textView.attributedText = attrStr;
[self.view addSubview:textView];
}
答案 1 :(得分:1)
字体问题。解决方法:清理/清理构建文件夹。有时帮忙。 /更新:我知道这听起来像是一个“愚蠢的建议” - 但它在我的案例中成了一个技巧,所以在这里张贴 - 以节省某人的时间。
答案 2 :(得分:1)
尝试一下
在我的情况下,当我尝试将“ Silversky Technology”设置为来自界面构建器的标签的属性文本时,在模拟器中运行时未显示,但在界面构建器中显示。 因此,我使用了一个技巧,使Silversky字体的字体比技术文本大1像素。
属性文本的字体大小相同,因此更改1个字的大小可以解决此问题。
也许这是xcode的错误,但这招对我有用。
答案 3 :(得分:0)
它有一个简单快速的解决方案,并且在我的案例中有效。 该解决方案是在AppDelegate.swift文件的didFinishLaunchingWithOptions func中添加代码行:
for textViews :
UITextView.appearance().font = UIFont(name: "IranSans", size: 17)
标签:
UILabel.appearance().font = UIFont(name: "IranSans", size: 17)
和其余的UiView像这两个☝️
答案 4 :(得分:0)
我最初的问题:
自定义字体,包含并捆绑在项目中。 XCode 版本 11
使用带有属性文本的 UILabel,改变了普通字体和斜体版本的使用。
界面生成器在单个 UILabel 中显示正常和斜体字体 - 模拟器和测试设备仅显示正常字体
清理构建文件夹没有帮助。
我的工作(解决方法)解决方案:
我用文本编辑器打开了 Interface Builder 文件 (*.storyboard) 并操作了颜色属性。我的文字是全白的。我将所有斜体都处理为 99% 的白色,将所有普通字体处理为 100% 的白色。
<color key="NSColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
和
<color key="NSColor" red="0.99" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
总结
尝试在具有变化字体的文本部分之间产生不可见的交替差异(属性) - 使用文本编辑器
答案 5 :(得分:-2)
我在xcode 6.1中使用了这个。我添加了一个带有单词&#34; Hello World&#34;的UILabel,并将字体更改为Didot。
这是我的故事板的xml代码。将此与您的比较,看看是否有任何错误
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" usesAttributedText="YES" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cd6-WA-P1d">
<rect key="frame" x="20" y="91" width="275" height="21"/>
<attributedString key="attributedText">
<fragment content="Hello World">
<attributes>
<color key="NSColor" cocoaTouchSystemColor="darkTextColor"/>
<font key="NSFont" size="24" name="Didot"/>
<paragraphStyle key="NSParagraphStyle" alignment="right" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
</attributes>
</fragment>
</attributedString>
<nil key="highlightedColor"/>
</label>
答案 6 :(得分:-2)
我试图在基本样式表格视图单元格中使用属性标签来执行此操作 只要在Interface Builder中选择“属性”选项,您的自定义字体就不会出现在字体选择器中。
您可能会注意到字体选择器是默认的系统字体选择器。
诀窍是将字体安装到/ Library / Fonts中。现在,当您将标签更改为Attributed时,它们将出现在字体对话框中,以及故事板视图和预览视图中。
但是,此仍然在运行时不起作用。如果您在没有安装字体的情况下在另一台计算机上查看故事板,Interface Builder将恢复为“密切匹配”(在我的情况下为Lucida Grande)。
所有这一切都有一个好处:如果您正在尝试花哨的格式化,很高兴看到它存在于Interface Builder中。然后,您可以查看故事板的源,并将属性复制到源代码中 不要忘记在Interface Builder中将标签重置为“Plain”,否则会出现“紧密匹配”问题,如上所述。
答案 7 :(得分:-3)
您是否在代码中更改该标签的文字。 在Interface Builder中使用label的config属性时,请勿在代码中更改与此标签相关的任何内容。