在 Interface Builder 中设置为 UIButton 的 Attributed Title 属性在应用程序中被忽略
Posted
技术标签:
【中文标题】在 Interface Builder 中设置为 UIButton 的 Attributed Title 属性在应用程序中被忽略【英文标题】:Attributed Title attributes set to UIButton in Interface Builder are ignored in app 【发布时间】:2015-05-15 17:40:27 【问题描述】:我有一个 UIButton,我在 Interface Builder 中给了一个属性标题:它有一个特定的字体,并且字符串的一部分是不同的颜色。
当我加载我的应用程序时,颜色保持不变,但应用程序将字体恢复为系统默认值...
有人遇到过这种情况或知道解决方法吗?试图避免在代码中设置属性标题。
如果重要的话,我使用的字体是 Open Sans,它可以正确显示在我在代码中指定字体的其他标签上。
【问题讨论】:
与UILabel
有完全相同的问题(归因于 IB 中的自定义字体)。好像是个bug……
你试过能不能通过代码设置吗?你使用的是什么版本的 ios?我遇到了一个问题,即某些属性在 8.1 上没有应用于标签、按钮等,但在所有其他版本中都可以正常工作。不知道为什么会这样。只是想知道这是否相似
在代码中工作正常。虽然希望让它从 Interface Builder 中工作。这是在 iOS 8.3 模拟器上运行的。我想我得尝试一些不同的版本。
根据我的经验,IB 中的属性字符串功能非常缺乏。我个人建议在代码中这样做以避免头痛。
您不会在代码中更改文本本身,是吗?这可能会根据您的操作方式重置属性。
【参考方案1】:
您是否尝试在更改按钮字体之前选择文本??
【讨论】:
当然。字体在 IB 中正确显示,只是在应用程序中显示不正确。【参考方案2】:一周前我遇到了同样的问题。我也在使用 Open Sans。但是每次我尝试构建时,我都会遇到一个编译错误,没有指向任何地方。
无论如何.. 我只是为按钮添加了一个标签,并按照我想要的方式进行了配置。
【讨论】:
【参考方案3】: NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setAlignment:NSTextAlignmentCenter];
[style setLineBreakMode:NSLineBreakByWordWrapping];
NSDictionary *dict1 = @NSFontAttributeName:[UIFont fontWithName:@"Varela Round" size:15.0f],
NSForegroundColorAttributeName:[UIColor whiteColor],
NSParagraphStyleAttributeName:style;
NSDictionary *dict2 = @NSFontAttributeName:[UIFont fontWithName:@"Varela Round" size:10.0f],
NSForegroundColorAttributeName:[UIColor whiteColor],
NSParagraphStyleAttributeName:style;
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] init];
[attString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Expensed\n" attributes:dict1]];
[attString appendAttributedString:[[NSAttributedString alloc] initWithString:@"Tap to edit" attributes:dict2]];
[cell.expenseTripButton setAttributedTitle:attString forState:UIControlStateNormal];
[[cell.expenseTripButton titleLabel] setNumberOfLines:0];
[[cell.expenseTripButton titleLabel] setLineBreakMode:NSLineBreakByWordWrapping];
【讨论】:
以上是关于在 Interface Builder 中设置为 UIButton 的 Attributed Title 属性在应用程序中被忽略的主要内容,如果未能解决你的问题,请参考以下文章
在 Interface Builder 中设置委托与使用 setDelegate: 有啥区别?
在 Interface Builder 中设置 Nib Name 字段时出现异常
在 Interface Builder (XCode 4) 中设置 UIButton 拉伸背景图像
如何在 XCode 5 Interface Builder 中设置accessibilityLabel 或accessibilityIdentifier?
如何使用主 iPhone 视图之外的 UI 元素在 Interface Builder 中设置 UIScrollView?