我想在y应用程序中使用自定义字体.
我在info.Plist文件中声明了"应用程序提供的字体"
并将label.font设置为带/不带.TTF扩展名的字体
将TTF文件拖入项目并将文件复制到项目中
为标签创造了一个出口,但仍然没有任何作用.
如果有人知道那边发生了什么,我想得到一些帮助.
最近我注意到这个问题已知为@ 4.1(xcode版本).
TNX :)
我有以下代码:
[[cancelButton titleLabel] setFont:[UIFont fontWithName:@"ProximaNova-Regular" size:15]];
Run Code Online (Sandbox Code Playgroud)
我如何设置字母间距?
我试图在UILabel上显示带有粗体黑色字体和大小50的数字.
经过一些失败的尝试后,我才意识到无论我将字体设置为什么颜色,它总是设置为lightGray.除了下面我还需要做些什么吗?
[DisplayLabel setFont:[UIFont fontWithName:[NSString stringWithUTF8String:"HelveticaNeue-Bold"] size:50]];
DisplayLabel.textColor = [UIColor brownColor];
DisplayLabel.textAlignment = NSTextAlignmentCenter;
Run Code Online (Sandbox Code Playgroud)
我正在使用故事板将标签添加到视图中.
我想使用自定义字体UILabel.自定义字体由文件加载:
NSString *fontPath = ... ; // a TTF file in iPhone Documents folder
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
CGFontRef customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
Run Code Online (Sandbox Code Playgroud)
我怎样才能转换CGFontRef为UIFont以中使用[UILabel setFont:]?
我想用不同的系统文本大小选项轻松测试我的应用程序,包括可访问性大小.这些可以在"设置"应用中设置(显示和亮度=>文字大小或常规=>辅助功能=>较大文本).
我目前可以找到的唯一方法是进入设置并使用UI更改值(编辑:下面描述的部分解决方案).这很慢而且很麻烦.我怀疑有一种方法可以使用私有API动态地改变它,但我无法弄清楚如何.由于我的目标是仅将其用于调试,因此私有API使用和调配很好(此代码不会用于生产).
为了尝试找到一个私有API来实现这一点,我查看了一些逆向工程资源.我是新的反汇编程序,符号表,类转储,以及查找我可以使用的私有API,但这是我到目前为止所尝试的:
我成功地调高了-[UIApplication preferredContentSizeCategory](其他帖子说这在过去有效),但这不会影响从中返回的结果+[UIFont preferredFontForTextStyle:].
使用反汇编程序IDA,我发现它+[UIFont preferredFontForTextStyle:]位于私有框架中UIFoundation.framework.(-[UIApplication preferredContentSizeCategory]在,UIKit.framework但反汇编并没有看起来有用).
正如我开始写这个问题(它总是这样发生),我发现了一个部分解决方案.可以在方案中设置启动参数以在启动时设置值.这很有用,但不是我追求的.
通过上面的回答,我发现用户偏好的值显然存储在" com.apple.UIKit.plist位于模拟器data/Library/Preferences目录中的文件"中.我们所追求的值可以从命令行实用程序设置plutil.这也是一种改进!但是我想在运行时动态地改变它.
更多关于IDA的结果:
我真的不知道如何阅读反汇编,但+[UIFont preferredFontForTextStyle:]似乎指向一个符号___UIFontForTextStyle,它似乎指向一些有趣的符号,称为_getUIContentSizeCategoryUnspecified和_getUIContentSizeCategoryPreferenceClass
"符号在小对象的未初始化数据部分中." .我不知道这意味着什么(我收集到的只是他们不是一个阶级或方法).
在网上搜索_getUIContentSizeCategory...符号不会产生任何结果,但附近还有另一个符号_getUIApplicationClass.我搜索了那个,因为它听起来更一般,并在一些WebKit源代码中发现了类似的东西.可能一无所获,但也许这是Apple的内部约定.无论如何,这个例子并没有真正帮助我解决问题.
无论如何感谢阅读到目前为止.如果你还在这里,我的问题是:
我希望能够动态模拟动态类型大小首选项的值.这些反汇编符号可能有所帮助,但也许我走错了路.感觉解决方案很接近,但我不能将所有部分放在一起.
将此值设置为启动参数很好,但不能完全解决我的问题.同样,修改模拟器的值plist也很适合自动化,但不能解决我的问题.
有没有办法在运行时动态更改此值?
我试图用下载的字体绘制一些文本.我查看了API文档并搜索了Web.我找到了一个解决方案,但问题是它只适用于CoreGraphics级别框架.所以我搜索了一种转换CGFont方式UIFont,但没有办法做到这一点.
我意识到UIFont并CGFont/CTFont完全分开,即使它们是从相同的字体文件创建的.CGFont并且CTFont可以相互转换,但是UIFont,唯一的方法是使用名称和大小等属性进行重新创建.适用的代码也是分开的.
例如,CATextLayer只接受CGFont/ CTFont- 否UIFont.但是所有UIKit控件都只接受UIFont.
为什么存在这种分离?还是我错了?(在UIKit课程中使用下载字体的任何方式?)
我想弄清楚我是否应该缓存[UIFont fontWithName:@"myfont"size:24].我在很多地方重复使用这种字体.我想知道iOS是否已经为我缓存了这一点,因为字体缓存在操作系统级别非常常见.
有人可以对此发表评论吗?
谢谢.
我想知道iOS app appView中的systemFontSize对于textLabel 是否总是相同的?这是取决于风格?
例如,当我 NSLog(@"%f",[UIFont systemFontSize]);得到14.0时.这总是一样的吗?
还有更多:如何在不更改font-family的情况下更改字体大小(假设我的plist中有自己的字体).
我试过了:
cell.textLabel.font = [UIFont fontWithName:@"Sansation-Light" size:12.0];
Run Code Online (Sandbox Code Playgroud)
但是UIFont总是想要我的fontname/family.我怎样才能避免这种情况,并且在我的所有屏幕上都有一种字体并且只改变尺寸?
我试图弄清楚如何将字体的样式更改为"瘦".有谁知道如何做到这一点?
这是我最好的尝试,但它不起作用:
m.font = UIFont(name: "Apple SD Gothic Neo", style: "Thin", size: 8.0)
Run Code Online (Sandbox Code Playgroud) 首先非常感谢您的帮助.我昨天刚刚升级了包含swift 2.2的Xcode.我遇到了一些问题但我通过遵循Natashatherobot的"swift 2.2中的新内容"主题来快速修复它们.但有一个问题我无法解决.这是关于UIFont的可用初始化程序,它是在swift 2.2中引入的.附件是一段简单的代码,它将在swift 2.2中报告错误.在我清理项目之前,它可能不会立即报告错误.
lazy var somelabel: UILabel = {
let label = UILabel()
let font = UIFont(name: "somefont", size: 10) ?? UIFont.systemFontOfSize(10) //this line gave me error
label.font = font
label.text = "Calculating..."
return label
}()
Run Code Online (Sandbox Code Playgroud)
错误是:(名称:字符串,大小:CGFloat) - > UIFont'不能转换为'(名称:字符串,大小:CGFloat) - > UIFont?'
我可以通过两种方式解决它:
方法1:不要把这一行
let font = UIFont(name: "somefont", size: 10) ?? UIFont.systemFontOfSize(10)
放在'lazy instantiation'闭包中.(把它放在计算属性报告中没有错误)
方法2:而不是使用:
UIFont(name: "somefont", size: 10)
Run Code Online (Sandbox Code Playgroud)
使用下面的代替(但我不认为这应该是正确的方法,因为它使初始化器更"objc"样式):
UIFont.init(name: "somefont", size: 10)
Run Code Online (Sandbox Code Playgroud)
但我仍然不明白为什么它会在lazy属性关闭中报告错误.如果有人能给我一些解释,我将非常感激.
uifont ×10
ios ×8
objective-c ×5
uilabel ×4
iphone ×2
swift ×2
uikit ×2
disassembly ×1
swift2.2 ×1
uistoryboard ×1
xcode4 ×1