【发布时间】:2017-12-27 21:30:08
【问题描述】:
关于如何以编程方式设置文本颜色有几个问题。这一切都很好,但也必须有一种方法可以通过 Interface Builder 来做到这一点。
“显示字体”框用于更改按钮文本的 大小,但 Xcode 会忽略使用那里的小部件所做的任何颜色更改,并且 NSButton 的属性检查器没有颜色选择器...
【问题讨论】:
标签: xcode interface-builder nsbutton
关于如何以编程方式设置文本颜色有几个问题。这一切都很好,但也必须有一种方法可以通过 Interface Builder 来做到这一点。
“显示字体”框用于更改按钮文本的 大小,但 Xcode 会忽略使用那里的小部件所做的任何颜色更改,并且 NSButton 的属性检查器没有颜色选择器...
【问题讨论】:
标签: xcode interface-builder nsbutton
我不知道为什么 NSButton 仍然缺少这个。但这里是 Swift 4 中的替换类:
import Cocoa
class TextButton: NSButton {
@IBInspectable open var textColor: NSColor = NSColor.black
@IBInspectable open var textSize: CGFloat = 10
public override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
}
public required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func awakeFromNib() {
let titleParagraphStyle = NSMutableParagraphStyle()
titleParagraphStyle.alignment = alignment
let attributes: [NSAttributedStringKey : Any] = [.foregroundColor: textColor, .font: NSFont.systemFont(ofSize: textSize), .paragraphStyle: titleParagraphStyle]
self.attributedTitle = NSMutableAttributedString(string: self.title, attributes: attributes)
}
}
【讨论】:
试试这个解决方案,我希望你会得到:)
NSFont *txtFont = button.font;
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setAlignment:button.alignment];
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[NSColor whiteColor], NSForegroundColorAttributeName, style, NSParagraphStyleAttributeName, txtFont, NSFontAttributeName, nil];
NSAttributedString *attrString = [[NSAttributedString alloc]
initWithString:button.title attributes:attrsDictionary];
[button setAttributedTitle:attrString];
【讨论】:
如果您喜欢“加入扩展程序并查看它是否粘住”的方法,也可以将此扩展程序添加到您的代码中。
extension NSButton {
@IBInspectable open var textColor: NSColor? {
get {
return self.attributedTitle.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? NSColor
}
set {
var attributes = self.attributedTitle.attributes(at: 0, effectiveRange: nil)
attributes[.foregroundColor] = newValue ?? NSColor.black
self.attributedTitle = NSMutableAttributedString(string: self.title,
attributes: attributes)
}
}
}
【讨论】:
编辑:误读的问题。以下是如何更改 iOS 应用上按钮的文本。
澄清一下,这对你不起作用?
【讨论】: