setFont方法已弃用?

43

我收到一个警告,说setFont已经被弃用了?

[button setFont:[UIFont boldSystemFontOfSize:13]];

有什么建议可以把它拿走吗..

3个回答

113

由于从iPhone OS 3.0开始,UIButton公开了其titleLabel,因此您必须直接对其设置字体:

[button.titleLabel setFont:[UIFont boldSystemFontOfSize:13]];

11

已接受的答案有效,并设置了一个按钮实例的字体。如果您想为所有UIButtons设置应用程序范围的字体,可以像这样做:

已接受的答案有效,并设置了一個按鈕實例的字體。如果您想為所有UIButtons設置應用程式範圍的字體,可以像這樣做:

// Set font to be used for labels inside UIButtons
[[UILabel appearanceWhenContainedIn:[UIButton class], nil] setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:15.0]];

虽然问题中没有明确要求,但如果你需要为所有标签(不在UIButtons内部)设置字体,可以按照以下方式进行:

// Set font for all UILabels
[[UILabel appearance] setFont:[UIFont fontWithName:@"HelveticaNeue" size:13.0]];

这是一个好主意。不幸的是,UILabel在UIAppearance代理中没有字体属性,这就是为什么字体无法工作的原因。请参见此答案http://stackoverflow.com/questions/17127921/appearance-proxy-not-working-as-intended-for-uibutton-font - Eva Madrazo
1
@EvaMadrazo,你能详细说明哪里出了问题吗?我在我的项目中使用上面的代码,它运行良好。要让appearanceWhenContainedInUIButton一起工作,请将按钮类型设置为UIButtonTypeCustom - lekksi
@EvaMadrazo 哦,你是说“为所有标签设置字体”对于 UIButton 不起作用吗?没错,我编辑了答案以使其更清晰。 - lekksi
是的,uilabel在外观代理中不包括setFont。因此,[[UILabel appearance] setFont:..] 没有效果。 - Eva Madrazo
@EvaMadrazo,奇怪的是,对我来说[[UILabel appearance] setFont:[UIFont fontWithName:@"STHeitiJ-Light" size:15]];似乎完全正常。 - lekksi

11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接