Ios 使用';归因于';界面生成器中的标签文本

Ios 使用';归因于';界面生成器中的标签文本,ios,xcode,interface-builder,xcode6,Ios,Xcode,Interface Builder,Xcode6,我试图放弃在我的viewController中使用NSAttributedString,选择在UILabel的属性检查器的“文本”字段中使用“属性化”选项(与“普通”对应) 我已经选择了要赋予属性的单个单词,并更改了它们的字体,这在文本预览窗口和IB本身的场景中得到了正确反映: 但是,模拟器没有反映这些更改,似乎在运行时没有使用为属性指定的字体(当我更改颜色时,这会按预期工作)。我已将字体添加到我的项目和plist中,但没有效果: 我还没有找到关于这个特性的文档,它很可能与IB中的“文本样式

我试图放弃在我的viewController中使用NSAttributedString,选择在UILabel的属性检查器的“文本”字段中使用“属性化”选项(与“普通”对应)

我已经选择了要赋予属性的单个单词,并更改了它们的字体,这在文本预览窗口和IB本身的场景中得到了正确反映:

但是,模拟器没有反映这些更改,似乎在运行时没有使用为属性指定的字体(当我更改颜色时,这会按预期工作)。我已将字体添加到我的项目和plist中,但没有效果:

我还没有找到关于这个特性的文档,它很可能与IB中的“文本样式”特性很相似(现在基本上没有用),但我只是想看看是否有人在过去做过类似的事情

非常感谢您的帮助或建议,谢谢

2015年7月3日编辑
嗯,我很高兴地报告,这个问题最终在Xcode 7中得到了解决(仍处于测试阶段)。所以我们可以最终解决这个问题。感谢所有和我一起尝试解决这个问题的人。

我在xcode 6.1中实现了这一点。我添加了一个带有“Hello World”字样的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>

我试图在基本样式表视图单元格中使用属性标签来完成此操作。
只要在Interface Builder中选择“属性化”选项,自定义字体就不会显示在字体选择器中

您可能会注意到字体选择器是默认的系统字体选择器

诀窍是将字体安装到/Library/fonts中。现在,当您将标签更改为“属性”时,它们将显示在“字体”对话框中,以及“情节提要”视图和“预览”视图中

但是,这在运行时仍然不起作用。如果你在另一台没有安装字体的计算机上查看故事板,界面生成器将恢复为“紧密匹配”(我的例子是Lucida Grande)

所有这些都有一个优点:如果您正在试验奇特的格式,很高兴在Interface Builder中看到它。然后,您可以查看故事板的源代码,并将属性复制到源代码中。

不要忘记在Interface Builder中将标签重置为“普通”,否则会出现如上所述的“紧密匹配”问题。

是否在代码中更改该标签的文本。
在Interface Builder中使用标签的配置属性时,不要在代码中更改与此标签相关的任何内容。

字体问题。解决方法:清除/清除生成文件夹。有时会有帮助。
/更新:我知道这听起来像是一个“愚蠢的建议”-但在我的情况下,这是一个骗局,所以在这里发布它-也许是为了节省别人的时间。

在Xcode 7.0测试版中:我发现这是可行的

故事板:

输出:

.你可以动态地做

-(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];
}

这是一个简单而快速的独处,这就是我的工作。 该解决方案是在AppDelegate.swift文件的didfishlaunchingwithoptions func中添加代码行:

对于文本视图

UITextView.appearance().font = UIFont(name: "IranSans", size: 17)
UILabel.appearance().font = UIFont(name: "IranSans", size: 17)
对于标签

UITextView.appearance().font = UIFont(name: "IranSans", size: 17)
UILabel.appearance().font = UIFont(name: "IranSans", size: 17)

对于剩下的两个人来说☝️

试试这个

在我的例子中,当我试图将“Silversky Technology”设置为interface builder标签的属性文本时,它在模拟器中运行时不显示,而是在interface builder中显示。 所以我用了一个技巧,使Silversky字体比科技文本大1个像素

属性文本在字体大小相同时有问题因此更改1个单词的大小这件事适合我


可能这是xcode错误,但这个技巧对我来说很有效。

我的第一期:

自定义字体,包含在项目中并与项目捆绑在一起。XCode版本11

使用带有属性文本的UILabel,更改普通字体和斜体版本的使用

界面生成器在单个UILabel中显示正常和斜体字体-模拟器和测试设备仅显示正常字体

清理生成文件夹没有帮助

我的工作(变通)解决方案:

我用文本编辑器打开了Interface Builder文件(*.storyboard),并操纵了颜色属性。我的文字全是白色的。我把所有斜体字改为99%白色,所有普通字体改为100%白色

<color key="NSColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>


摘要


尝试在字体不断变化的文本部分之间进行不可见的交替差异(属性)-使用文本编辑器

,这是因为Didot是默认的iOS字体之一()。尝试使用列表中没有的字体。在6.1中仍然不适用于我。将标签重置为“普通”意味着您丢失了大量关于文本呈现方式的选项,因此这永远不是一个解决方案…请给出您的Xcode版本您是否在界面生成器中使用标签的大小类?我的意思是,您是否试图通过界面生成器为不同大小的类设置不同的字体大小?我在Xcode 7.1(7B91b)中仍然存在这个问题。这个问题在Xcode 7.3中也仍然存在。